diff --git a/README.md b/README.md
index ae76a70..d1513ca 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,114 @@
-# LDAP-Admin
+# ldap-admin
-## abstract
+A tool to manage users in an LDAP dictionary or a MySQL database.
-Some ruby code for LDAP directory management.
+_unfinished_
-## requires
+## Synopsis
-ruby 1.8
+The DN's used in ``tester.rb`` are obviously not applicable for other sites.
+Additionally they do not reflect the current structure used here at
+**weird-web-workers.org**.
-## status
+To test anything you need to have a directory and use fitting DN's for
+testing.
-discontinued
\ No newline at end of file
+## Description
+
+### What is there
+
+ * Various data-models (user, group, mailAccount, mailALias, etc.)
+ * These might be stored in different storage backends
+ * These storage engines are queried with different query languages.
+ * The model specifies _which_ data is queried.
+ * The storage engine decides _how_ the data is queried.
+
+> **Conflict**: With ldap it is difficult to separate the _which_ from the
+> _how_.
+>
+> **Possible solution: Some kind of factory that initializes the concrete
+> database by the class of the model and the class of the storage engine.
+>
+> **Alternative**: Instead of a separate factory it might be feasable to
+> create a generic database class with a method to create an instance by a
+> given model.
+>
+> **Problem**: Then the database class has to know the initialization
+> information for the associated model, which is an implementation detail
+> of the model in fact. So this information should come from somewhere else
+> but probably not from the model, because it probably also needs
+> implementation details of the database class.
+>
+> **Maybe**: it is possible to do something by nameing conventions. But it
+> might be cleaner to have a separate configuration file for each storage
+> backend in which the necessary informations for the queries of the models
+> can be configured.
+
+A yaml file for this might look like this: (ldap.yml)
+
+ ldap: # => wenn es pro Datenbank ne eigenen datei gibt ist das nicht noetig
+ host: host.one.virtual
+ port: 389
+ queries:
+ User:
+ baseDn: ou=user,o=system,dc=weird-web-workers,dc=org
+ filter: (objectClass=posixAccount)
+ Group:
+ baseDn: ou=group,o=system,dc=weird-web-workers,dc=org
+ filter: (objectClass=posixGroup)
+
+ ...
+
+As an alternative of a single mapping file we could create one mapping file
+for each mode / storage backend combination. These would be very small and
+fast readable.
+
+Filesystem structure:
+
+ model - user.rb
+ - group.rb
+ - site.rb
+ - mailalias_role.rb
+ - mailalias_person.rb
+ - mailaccount.rb
+ data - ldap.rb
+ data - config - ldap.yml
+ adapter - ldap.rb
+ - config - ldap - user.yml
+ - group.yml
+ - site.yml
+ - mailalias_role.yml
+ - mailalias_person.yml
+ - mailaccount.yml
+
+## Requirements
+
+ * A running test dictionary or database
+ * Ruby
+
+## Dependencies
+
+unknown
+
+## Contributing
+
+Just email me.
+
+## License
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+## Author
+
+Georg Hopp