diff --git a/src/libs/qmljs/qmljsbind.cpp b/src/libs/qmljs/qmljsbind.cpp
index f6acc38b3e64160a1af93be24f13e13d5f8ed28c..9f94dd0381f9f615adbbb8a6b22929efeb727caa 100644
--- a/src/libs/qmljs/qmljsbind.cpp
+++ b/src/libs/qmljs/qmljsbind.cpp
@@ -39,6 +39,22 @@ using namespace QmlJS;
 using namespace QmlJS::AST;
 using namespace QmlJS::Interpreter;
 
+/*!
+    \class QmlJS::Bind
+    \brief Collected information about a single Document.
+    \sa QmlJS::Document QmlJS::Link
+
+    Each QmlJS::Document owns a instance of Bind. It provides access to data
+    that can be derived by looking at the document in isolation. If you need
+    information that goes beyond that, you need to create a
+    \l{QmlJS::Interpreter::Context} using \l{QmlJS::Link}.
+
+    The document's imports are classified and available through fileImports(),
+    directoryImports() and libraryImports().
+
+    It allows AST to code model lookup through findQmlObject() and findFunctionScope().
+*/
+
 Bind::Bind(Document *doc)
     : _doc(doc),
       _currentObjectValue(0),
diff --git a/src/libs/qmljs/qmljsdocument.cpp b/src/libs/qmljs/qmljsdocument.cpp
index 8cad21c1d41e8c9fa48c57f2112430c97328d26f..c1d9d7f3cbe0546217e9476a785ade807e48eee5 100644
--- a/src/libs/qmljs/qmljsdocument.cpp
+++ b/src/libs/qmljs/qmljsdocument.cpp
@@ -39,6 +39,47 @@
 using namespace QmlJS;
 using namespace QmlJS::AST;
 
+/*!
+    \class QmlJS::Document
+    \brief A Qml or JavaScript document.
+    \sa QmlJS::Snapshot
+
+    Documents are usually created by the \l{QmlJSEditor::Internal::ModelManager}
+    and stored in a \l{QmlJS::Snapshot}. They allow access to data such as
+    the file path, source code, abstract syntax tree and the \l{QmlJS::Bind}
+    instance for the document.
+
+    To make sure unused and outdated documents are removed correctly, Document
+    instances are usually accessed through a shared pointer, see \l{Document::Ptr}.
+*/
+
+/*!
+    \class QmlJS::LibraryInfo
+    \brief A Qml library.
+    \sa QmlJS::Snapshot
+
+    A LibraryInfo is created when the \l{QmlJSEditor::Internal::ModelManager} finds
+    a Qml library and parses the qmldir file. The instance holds information about
+    which Components the library provides and which plugins to load.
+
+    The ModelManager will try to extract detailed information about the types
+    defined in the plugins this library loads. Once it is done, the data will
+    be available through the metaObjects() function.
+*/
+
+/*!
+    \class QmlJS::Snapshot
+    \brief A set of Document::Ptr and LibraryInfo instances.
+    \sa QmlJS::Document QmlJS::LibraryInfo
+
+    A Snapshot holds and offers access to a set of Document and LibraryInfo instances.
+
+    Usually Snapshots are copies of the snapshot maintained and updated by the
+    \l{QmlJSEditor::Internal::ModelManager} that updates its instance as parsing
+    threads finish and new information becomes available.
+*/
+
+
 Document::Document(const QString &fileName)
     : _engine(0)
     , _pool(0)
diff --git a/src/libs/qmljs/qmljslink.cpp b/src/libs/qmljs/qmljslink.cpp
index 5cab864e7e029fd72cf151b9ac98cbadb795e633..583a884f78fa356655de2e4fddfe520554d48f53 100644
--- a/src/libs/qmljs/qmljslink.cpp
+++ b/src/libs/qmljs/qmljslink.cpp
@@ -43,6 +43,19 @@ using namespace QmlJS;
 using namespace QmlJS::Interpreter;
 using namespace QmlJS::AST;
 
+/*!
+    \class QmlJS::Link
+    \brief Initializes the Context for a Document.
+    \sa QmlJS::Document QmlJS::Interpreter::Context
+
+    Initializes a context by resolving imports and building the root scope
+    chain. Currently, this is a expensive operation.
+
+    It's recommended to use a the \l{LookupContext} returned by
+    \l{QmlJSEditor::SemanticInfo::lookupContext()} instead of building a new
+    \l{Context} with \l{Link}.
+*/
+
 Link::Link(Context *context, const Document::Ptr &doc, const Snapshot &snapshot,
            const QStringList &importPaths)
     : _doc(doc)