       @_aggregateService.registerAggregateRoot aggregateName, AggregateRoot
 
 
+  ###*
+  * @name set
+  *
+  * @description
+  * > Use as: set(key, value)
+  * Configure settings for the `BoundedContext`.
+  *
+  * @example
+
+     exampleContext.set 'store', StoreAdapter
+
+  *
+  * @param {Object} key
+  * Available keys are: `store` Eventric Store Adapter
+  ###
   set: (key, value) ->
     @_params[key] = value
     @

    @


  addAggregate: (aggregateName, AggregateRootClass) ->
    @_aggregateRootClasses[aggregateName] = AggregateRootClass
    @


  addDomainEventHandler: (eventName, handlerFn) ->
    @_domainEventHandlers[eventName] = [] unless @_domainEventHandlers[eventName]
    @_domainEventHandlers[eventName].push => handlerFn.apply @_di, arguments

    @_domainEventClasses[domainEventName]


  ###*
  * @name command
  *
  * @description
  * Use as: command(command, callback)
  *
  * Execute previously added `commands`. Upon successful execution this will trigger a `DomainEvent`.
  *
  * @example
    ```javascript
    exampleContext.command({
      name: 'doSomething'
    },
    function(err, result) {
      // callback
    });
    ```
  *
  * @param {Object} command Object containing the command definition
  * - `name` The name of the `command`
  * - `params` Object containing parameters. The `command` will get this as first parameter.
  *
  * @param {Function} callback Gets called after the command got executed with the arguments:
  * - `err` null if successful
  * - `result` Set by the `command`
  ###
  command: (command, callback) ->
    new Promise (resolve, reject) =>
      if @_commandHandlers[command.name]
