diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..7a7429f
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2010 Max De Marzi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/README.rdoc b/README.rdoc
new file mode 100644
index 0000000..4e23f2b
--- /dev/null
+++ b/README.rdoc
@@ -0,0 +1,44 @@
+== Welcome to Neography
+
+Neography is a thin ruby wrapper to the Neo4j Rest API, for more information:
+* {Getting Started with REST for Neo4j}[http://wiki.neo4j.org/content/Getting_Started_REST]
+* {Neo4j Rest API Reference}[http://components.neo4j.org/neo4j-rest/]
+
+
+=== Installation
+
+gem install 'neography'
+require 'neography'
+
+
+==== Configuration
+
+Neography::Config.use do |config|
+ config[:protocol] = 'http://'
+ config[:server] = 'localhost'
+ config[:port] = '9999'
+end
+
+==== Rails
+
+Just add gem 'neography' to your Gemfile and run bundle install
+
+Use the defaults (shown above) or create neography.rb in your config/initializers directory.
+
+=== Documentation
+
+Neography::Node.new # Create an empty node
+Neography::Node.new(:age => 31, :name => "Max") # Create a node with some properties
+Neography::Node.load(id) # Get a node and its properties
+Neography::Node.set_properties(3, {:age => 31, :name => "Max"} ) # Deletes any existing properties with the passed hash
+Neography::Node.properties(3) # Returns a hash of a node's properties or nil
+Neography::Node.remove_property(3, :age) # Deletes the existing property
+Neography::Node.del(3) # Deletes the node
+
+
+=== License
+* Neography - MIT, see the LICENSE file http://github.com/maxdemarzi/neography/tree/master/LICENSE.
+* Lucene - Apache, see http://lucene.apache.org/java/docs/features.html
+* Neo4j - Dual free software/commercial license, see http://neo4j.org/
+
+
diff --git a/lib/neography.rb b/lib/neography.rb
index 60b355d..c692bb4 100644
--- a/lib/neography.rb
+++ b/lib/neography.rb
@@ -44,8 +44,9 @@ def evaluate_response(response)
#Net::HTTP.http_logger_options = {:verbose => true}
#Net::HTTP.http_logger_options = {:body => true}
+require 'neography/config'
require 'neography/neo'
require 'neography/node'
-
+require 'neography/relationship'
find_and_require_user_defined_code
diff --git a/lib/neography/config.rb b/lib/neography/config.rb
new file mode 100644
index 0000000..f60d84a
--- /dev/null
+++ b/lib/neography/config.rb
@@ -0,0 +1,152 @@
+module Neography
+
+ # == Keeps configuration for neography
+ #
+ # The most important configuration options are Neograophy::Config[:server] and Neograophy::Config[:port] which are
+ # used to locate where the neo4j database and is stored on the network.
+ # If these options are not supplied then the default of localhost:9999 will be used.
+ #
+ # ==== Default Configurations
+ # :protocol:: default http:// protocol to use (can be https://)
+ # :server:: default localhost where the database is stored on the network
+ # :port:: default 9999 what port is listening
+ #
+ class Config
+ # This code is copied from merb-core/config.rb.
+ class << self
+ # Returns the hash of default config values for neography
+ #
+ # ==== Returns
+ # Hash:: The defaults for the config.
+ def defaults
+ @defaults ||= {
+ :protocol => 'http://',
+ :server => 'localhost',
+ :port => '9999'
+ }
+ end
+
+
+ # Yields the configuration.
+ #
+ # ==== Block parameters
+ # c :: The configuration parameters, a hash.
+ #
+ # ==== Examples
+ # Neography::Config.use do |config|
+ # config[:server] = '192.168.1.13'
+ # end
+ #
+ # ==== Returns
+ # nil
+ def use
+ @configuration ||= {}
+ yield @configuration
+ nil
+ end
+
+
+ # Set the value of a config entry.
+ #
+ # ==== Parameters
+ # key :: The key to set the parameter for.
+ # val :: The value of the parameter.
+ #
+ def []=(key, val)
+ (@configuration ||= setup)[key] = val
+ end
+
+
+ # Gets the the value of a config entry
+ #
+ # ==== Parameters
+ # key:: The key of the config entry value we want
+ #
+ def [](key)
+ (@configuration ||= setup)[key]
+ end
+
+
+ # Remove the value of a config entry.
+ #
+ # ==== Parameters
+ # key