diff --git a/lib/declarative/definitions.rb b/lib/declarative/definitions.rb
index <HASH>..<HASH> 100644
--- a/lib/declarative/definitions.rb
+++ b/lib/declarative/definitions.rb
@@ -20,12 +20,12 @@ module Declarative
 
     # #add is high-level behavior for Definitions#[]=.
     # reserved options:
-    #   _features
+    #   :_features
     #   :_defaults
-    #   :_composer # TODO: test me.
+    #   :_base
     def add(name, options={}, &block)
       options = options.delete(:_defaults).(name, options) if options[:_defaults] # FIXME: pipeline?
-      base    = options.delete(:_composer)
+      base    = options.delete(:_base)
       nested_builder = options.delete(:_nested_builder)
       features = options.delete(:_features)
 
diff --git a/lib/declarative/schema.rb b/lib/declarative/schema.rb
index <HASH>..<HASH> 100644
--- a/lib/declarative/schema.rb
+++ b/lib/declarative/schema.rb
@@ -11,12 +11,11 @@ module Declarative
         heritage.record(:property, name, options, &block)
 
         options = {
-          _composer:    default_nested_class,
+          _base:    default_nested_class,
         }.merge(options)
 
         options[:_nested_builder] = NestedBuilder if block
         options[:_defaults]       = _defaults
-        # TODO: test merge order. test :_composer.
 
         definitions.add(name, options, &block)
       end
rename _composer to _base.