diff --git a/bus.png b/bus.png
index c0b9ccb..9191038 100644
Binary files a/bus.png and b/bus.png differ
diff --git a/index.rst b/index.rst
index 04680fb..0d69966 100644
--- a/index.rst
+++ b/index.rst
@@ -213,6 +213,19 @@ freely between them.
Service which produces content in some form.
+Meta
+----
+
+These are the services which together form the basis of metadata and analytics.
+:doc:`Collection, storing and delivering metadata ` about everything in the system.
+
+:doc:`Meta Data `
+ Service which stores and delivers metadata between services.
+
+:doc:`Meta Analytics `
+ Service which analyzes the metadata stored by the Meta Data service.
+
+
Interfaces
==========
@@ -242,6 +255,9 @@ These interfaces are not bound by the standard.
:doc:`CMS IF `
Between :doc:`Bazaar ` and :doc:`CMS `.
+:doc:`Meta IF `
+ Data Service provides an interface to query for user data from Data Providers.
+
Infrastructure
==============
diff --git a/meta/analytics/index.rst b/meta/analytics/index.rst
new file mode 100644
index 0000000..1b02639
--- /dev/null
+++ b/meta/analytics/index.rst
@@ -0,0 +1,6 @@
+
+Meta Analytics
+**************
+
+Analyzes the data stored in :doc:`Meta Data ` service.
+
diff --git a/meta/data/index.rst b/meta/data/index.rst
new file mode 100644
index 0000000..78e72cd
--- /dev/null
+++ b/meta/data/index.rst
@@ -0,0 +1,10 @@
+
+Meta Data
+*********
+
+.. toctree::
+
+ interface
+
+Service which stores and delivers metadata between other services.
+
diff --git a/meta/data/interface.rst b/meta/data/interface.rst
new file mode 100644
index 0000000..1db5f36
--- /dev/null
+++ b/meta/data/interface.rst
@@ -0,0 +1,5 @@
+
+Meta interface
+**************
+
+
diff --git a/meta/index.rst b/meta/index.rst
new file mode 100644
index 0000000..eb0546e
--- /dev/null
+++ b/meta/index.rst
@@ -0,0 +1,59 @@
+
+Meta
+****
+
+.. toctree::
+
+ data/index
+ analytics/index
+
+Services may have data which they want to describe to other services.
+Examples of this type of data is metadata of learning materials, links between
+statements in curriculum and learning material, and analytics metrics.
+
+By having common vocabulary, the metadata, between learning materials, curriculum and
+analytics metrics makes it possible to link the requirements and goals to actual user actions
+and learning results. Learning material and analytics metrics are tagged with
+keywords and same keywords are used inside the curriculum.
+
+Usage data may be collected automatically by the systems.
+Collection of data happens by the services, but the data must be accessible for
+services which are analyzing the data. This can be the same service of course,
+but it would be much better to share the data system wide.
+This way all services can see how the user is moving between services in the whole system.
+This data may even be open.
+
+Each service collects and stores the data themselves and then periodically publishes
+the data to central repository. Data is then queried back from central repository to
+services which need it. Central repository behaves like a cache for the data and it
+is stored there for only certain amount of time.
+
+Each service collects the data and pushes it to central repository in realtime.
+Central repository works as a publish/subscribe message bus and publishes the data
+to all listening parties. Data is not stored in the repository.
+
+Each service has common API which everyone else can use to query for metadata and metrics.
+There would be retention policies how long the data must be accessible in the API.
+
+The repository for all metadata and analytics metrics could be key/value store with
+graph and timeseries functionalities. Meaning the data can have complex hierarchies
+and values can contain value timeseries data.
+The metadata repository can be updated by everyone and it keeps track who is doing what and why.
+
+Requirements for the repository:
+
+* must have a database which stores the data for certain period
+* must have REST API to query the data (with public and open part)
+* must have publish/subscribe API for realtime message passing
+* must have an API to register services and then it must query periodically the data
+ and publish it in the publish/subscribe API on behalf of the service
+
+Services:
+
+* may connect to the publish/subscribe API
+* may have common API for querying metrics and register to the repository
+* must either connect to the publish/subscribe API or have the common API
+* must register metadata keywords
+
+
+
diff --git a/services.png b/services.png
index c47882c..7c7fda1 100644
Binary files a/services.png and b/services.png differ
diff --git a/sitemap.rst b/sitemap.rst
index a7c7c9d..e0d4d32 100644
--- a/sitemap.rst
+++ b/sitemap.rst
@@ -7,6 +7,7 @@ Site Map
index
story/index
auth/index
+ meta/index
bazaar/index
lms/index
cms/index