anchor.diff:    end
   end
   ```
  -<1> `group` allows bundling together subelements (and which can be moved to their own files)
  -<2> `set` defines simple values
  -<3> `service` defines our main application objects
  -
  -Any element can be accessed directly from the assembly object.
  +
  +Along with a settings file to define our application settings.
  +
  +.config/settings.rb
  +```ruby
  +Alki do
  + set(:home) { ENV['HOME'] }
  + set(:db_path) { ENV['TODO_DB_PATH'] || File.join(home,'.todo_db') }
  + set :prompt, 'todo> '
  +end
  +```
  +
  +Settings and services can be accessed by requiring the main "lib/todo.rb" file,
  +creating a new assembly instance,
  +and then calling methods to refer to the different elements.
   
   ```
   $ bundle exec irb -Ilib
  
positive.code:  => #<Todo:21964520>
  ```
  
  ### Defining Elements
  
  Adding things to the assembly requires an assembly definition file. By convention this is
  named `config/assembly.rb` and is built using a simple DSL. There are
  a handful of different element types in Assemblies. Below are a few of the
  most common. Full documentation of the DSL can be found at http://alki.io[alki.io].
  
  Elements can refer to other elements, and can be defined in any order.
  
  .config/assembly.rb
  ```ruby
  Alki do
    group :settings do <1>
      set(:home) { ENV['HOME'] } <2>
      set(:db_path) { ENV['TODO_DB_PATH'] || File.join(home,'.todo_db') }
      set :prompt, 'todo> '
    end
  
    service :interface do <3>
      require 'todo/readline_interface'
      Todo::ReadlineInterface.new settings.prompt, handler
    end
  
negative.code:  => true
  2.4.0 :002 > todo = Todo.new
   => #<Todo:21964520>
  2.4.0 :003 > todo.settings.prompt
   => "> "
  2.4.0 :004 > todo.interface.run
  > ?
  All commands can be shortened to their first letters
  print
  