diff --git a/.gitignore b/.gitignore
index b4139907ce7b2da09638cff32b195579edf9a233..b2712f851542ec62bd2f23071485f5cf9b3096e3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -20,7 +20,9 @@
 *.pyc
 *.egg-info
 __pycache__
-build
 
-# Grunt automation tool related stuff
-/node_modules/
+# Package building related folders.
+/archive/idea*
+/build/
+/dist/idea*
+/doc/_build/
diff --git a/README.rst b/README.rst
index 435dcfbc9a74555a9e003288af4069fcbab0bba0..444469567bc69f7de33ae17d75a498f40e52143f 100644
--- a/README.rst
+++ b/README.rst
@@ -1,7 +1,25 @@
-idea-format
+idea-format - README
 ================================================================================
 
+.. warning::
+
+    Although production code is based on this library, it should still be considered
+    as work in progress.
+
+
+Introduction
+--------------------------------------------------------------------------------
+
 Python 2 and 3 compatible library for working with IDEA messages.
 
 This README file is work in progress, for more information please visit home page
 at https://idea.cesnet.cz/en/index.
+
+
+Copyright
+--------------------------------------------------------------------------------
+
+| Copyright (c) since 2016, CESNET, z. s. p. o.
+| Author: Pavel Kácha <pavel.kacha@cesnet.cz>
+| Use of this package is governed by the ISC license, see LICENSE file.
+|
diff --git a/conf.py b/conf.py
new file mode 100644
index 0000000000000000000000000000000000000000..9c923b947b2f528df5109c24a4b721c0bea0d9a4
--- /dev/null
+++ b/conf.py
@@ -0,0 +1,184 @@
+# -*- coding: utf-8 -*-
+#-------------------------------------------------------------------------------
+# This file is part of idea-format package (https://pypi.python.org/pypi/idea-format).
+#
+# Copyright (c) since 2016, CESNET, z. s. p. o.
+# Author: Pavel Kácha <pavel.kacha@cesnet.cz>
+# Use of this source is governed by an ISC license, see LICENSE file.
+#-------------------------------------------------------------------------------
+
+
+import os
+import sys
+import json
+
+
+#
+# Import local version of idea-format library, so that we can insert correct version
+# number into documentation.
+#
+sys.path.insert(0, os.path.abspath('.'))
+import idea
+
+
+# -- Load custom metadata ------------------------------------------------------
+
+# These metadata further describe the exact package version and repository
+# revision for which the documentation is being generated. This information will
+# be inserted into documentation index page.
+
+with open('metadata.json') as json_metadata_file:
+    custom_metadata = json.load(json_metadata_file)
+
+def setup(app):
+    app.add_config_value('build_suite', custom_metadata['suite'], 'env')
+
+
+# -- General configuration -----------------------------------------------------
+
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    'sphinx.ext.autodoc',
+    'sphinx.ext.intersphinx',
+    'sphinx.ext.ifconfig',
+    'sphinx.ext.todo',
+    'sphinx.ext.coverage',
+    'sphinx.ext.viewcode',
+    'sphinx.ext.githubpages']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['doc/_templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+#
+# source_suffix = ['.rst', '.md']
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'manual'
+
+# General information about the project.
+project = u'idea-format'
+copyright = u'since 2016, CESNET, z.s.p.o.'
+author = u'Pavel Kácha'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.s
+version = idea.__version__
+# The full version, including alpha/beta/rc tags.
+release = idea.__version__
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This patterns also effect to html_static_path and html_extra_path
+exclude_patterns = ['doc/_build', 'resources', 'Thumbs.db', '.DS_Store']
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# If true, `todo` and `todoList` produce output, else they produce nothing.
+todo_include_todos = True
+
+# Define additional rst replacement strings. These are inserting metadata values,
+# that have been loaded previously.
+rst_epilog = """
+.. |codename| replace:: **{codename}**
+.. |suite| replace:: *{suite}*
+.. |bversion| replace:: *{bversion}*
+.. |revision| replace:: ``{revision}``
+.. |bnumber| replace:: *- {bnumber}*
+""".format(**custom_metadata)
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+#
+html_theme = 'sphinx_rtd_theme'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#
+# html_theme_options = {}
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['doc/_static']
+
+
+# -- Options for HTMLHelp output -----------------------------------------------
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'idea-format'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+latex_elements = {
+    # The paper size ('letterpaper' or 'a4paper').
+    #
+    # 'papersize': 'letterpaper',
+
+    # The font size ('10pt', '11pt' or '12pt').
+    #
+    # 'pointsize': '10pt',
+
+    # Additional stuff for the LaTeX preamble.
+    #
+    # 'preamble': '',
+
+    # Latex figure (float) alignment
+    #
+    # 'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+#  author, documentclass [howto, manual, or own class]).
+latex_documents = [
+    (master_doc, 'idea-format.tex', u'idea-format - Python library for working with IDEA messages - Documentation',
+     u'Pavel Kácha', 'manual'),
+]
+
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    (master_doc, 'idea-format', u'idea-format - Python library for working with IDEA messages - Documentation',
+     [author], 1)
+]
+
+
+# -- Options for Texinfo output ------------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+    (master_doc, 'idea-format', u'idea-format - Python library for working with IDEA messages - Documentation',
+     author, 'idea-format', 'One line description of project.',
+     'Miscellaneous'),
+]
+
+
+# Example configuration for intersphinx: refer to the Python standard library.
+intersphinx_mapping = {'python': ('https://docs.python.org/3.4', None)}
diff --git a/doc/_doclib/api.rst b/doc/_doclib/api.rst
new file mode 100644
index 0000000000000000000000000000000000000000..d334971db679708459d069601d574448c71e5fd2
--- /dev/null
+++ b/doc/_doclib/api.rst
@@ -0,0 +1,18 @@
+.. _section-api-idea:
+
+API
+================================================================================
+
+.. warning::
+
+    Although a working production code is based on this library, it should still
+    be considered to be work in progress.
+
+.. toctree::
+   :maxdepth: 1
+   :caption: API Contents:
+   :glob:
+
+   api_idea.base
+   api_idea.lite
+   api_idea.valid
diff --git a/doc/_doclib/api_idea.base.rst b/doc/_doclib/api_idea.base.rst
new file mode 100644
index 0000000000000000000000000000000000000000..9ca73b08aebe23eaf003a7250b2354a3401f1686
--- /dev/null
+++ b/doc/_doclib/api_idea.base.rst
@@ -0,0 +1,9 @@
+.. _section-api-idea-base:
+
+idea.base module
+================================================================================
+
+.. automodule:: idea.base
+    :show-inheritance:
+    :members:
+    :undoc-members:
diff --git a/doc/_doclib/api_idea.lite.rst b/doc/_doclib/api_idea.lite.rst
new file mode 100644
index 0000000000000000000000000000000000000000..4c6de6a1489be14597321dc1c04a53d4c139f98c
--- /dev/null
+++ b/doc/_doclib/api_idea.lite.rst
@@ -0,0 +1,9 @@
+.. _section-api-idea-lite:
+
+idea.lite module
+================================================================================
+
+.. automodule:: idea.lite
+    :show-inheritance:
+    :members:
+    :undoc-members:
diff --git a/doc/_doclib/api_idea.valid.rst b/doc/_doclib/api_idea.valid.rst
new file mode 100644
index 0000000000000000000000000000000000000000..2119c9f59b1c9a2db64660de495f9b093d8d4244
--- /dev/null
+++ b/doc/_doclib/api_idea.valid.rst
@@ -0,0 +1,9 @@
+.. _section-api-idea-valid:
+
+idea.valid module
+================================================================================
+
+.. automodule:: idea.valid
+    :show-inheritance:
+    :members:
+    :undoc-members:
diff --git a/doc/_static/.gitplaceholder b/doc/_static/.gitplaceholder
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/doc/_templates/.gitplaceholder b/doc/_templates/.gitplaceholder
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/manual.rst b/manual.rst
new file mode 100644
index 0000000000000000000000000000000000000000..96860fe488772882400bd05dcc7b04c181b2af38
--- /dev/null
+++ b/manual.rst
@@ -0,0 +1,38 @@
+.. MASTER SPHINX-DOC DOCUMENTATION FILE FOR IDEA-FORMAT PACKAGE
+
+   This file is part of idea-format package (https://pypi.python.org/pypi/idea-format).
+
+   Copyright (c) since 2016, CESNET, z. s. p. o.
+   Author: Pavel Kácha <pavel.kacha@cesnet.cz>
+   Use of this source is governed by an ISC license, see LICENSE file.
+
+
+Welcome to idea-format' documentation!
+================================================================================
+
+.. note::
+
+    Please be aware, that this version of documentation is appropriate for:
+
+    * version:      |bversion|
+    * distribution: |codename| (|suite|)
+    * Git revision: |revision|
+
+.. warning::
+
+    Although production code is based on this library, it should still be considered
+    as work in progress.
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+
+   README
+   doc/_doclib/api
+
+Indices and tables
+================================================================================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff --git a/metadata.json b/metadata.json
new file mode 100644
index 0000000000000000000000000000000000000000..7a267d0dc6698015dd61ccce047e55293ea25799
--- /dev/null
+++ b/metadata.json
@@ -0,0 +1 @@
+{"codename":"local","suite": "unstable","bversion":"unknown","revision":"latest","bnumber":"unknown"}