diff --git a/.classpath b/.classpath
deleted file mode 100644
index f52b649dc..000000000
--- a/.classpath
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/.gitignore b/.gitignore
index e493dd6ee..7cfc64f07 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,6 @@
bin
dist
+
+# Maven target
+target/
+
diff --git a/.project b/.project
deleted file mode 100644
index 2bbc43fc5..000000000
--- a/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- Privilege
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index c436f312a..000000000
--- a/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,87 +0,0 @@
-#Sat Nov 06 15:16:05 CET 2010
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.6
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=warning
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=all_standard_tags
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=warning
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=enabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.6
diff --git a/lib/dom4j-1.6.1-src.zip b/lib/dom4j-1.6.1-src.zip
deleted file mode 100644
index 39b4137d3..000000000
Binary files a/lib/dom4j-1.6.1-src.zip and /dev/null differ
diff --git a/lib/dom4j-1.6.1.jar b/lib/dom4j-1.6.1.jar
deleted file mode 100644
index c8c4dbb92..000000000
Binary files a/lib/dom4j-1.6.1.jar and /dev/null differ
diff --git a/lib/log4j-1.2.15.jar b/lib/log4j-1.2.15.jar
deleted file mode 100644
index c930a6ab4..000000000
Binary files a/lib/log4j-1.2.15.jar and /dev/null differ
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 000000000..53f666142
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,176 @@
+
+ 4.0.0
+ ch.eitchnet
+ ch.eitchnet.privilege
+ jar
+ 1.0-SNAPSHOT
+ ch.eitchnet.privilege
+ https://github.com/eitch/ch.eitchnet.privilege
+
+
+ UTF-8
+
+
+
+
+ 2011
+
+
+ GNU Lesser General Public License
+ http://www.gnu.org/licenses/lgpl.html
+ repo
+
+
+
+ eitchnet.ch
+ http://blog.eitchnet.ch
+
+
+
+ eitch
+ Robert von Vurg
+ eitch@eitchnet.ch
+ http://blog.eitchnet.ch
+ eitchnet.ch
+ http://blog.eitchnet.ch
+
+ architect
+ developer
+
+ +1
+
+ http://localhost
+
+
+
+
+
+ Github Issues
+ https://github.com/eitch/ch.eitchnet.privilege/issues
+
+
+
+
+
+ scm:git:https://github.com/eitch/ch.eitchnet.privilege.git
+ scm:git:git@github.com:eitch/ch.eitchnet.privilege.git
+ https://github.com/eitch/ch.eitchnet.privilege
+
+
+
+
+
+
+ junit
+ junit
+ 4.10
+ test
+
+
+ log4j
+ log4j
+ 1.2.17
+
+
+ maven
+ dom4j
+ 1.7-20060614
+
+
+ ch.eitchnet
+ ch.eitchnet.utils
+ 1.0-SNAPSHOT
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 2.3.2
+
+ 1.6
+ 1.6
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 2.4
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-site-plugin
+ 2.3
+
+ UTF-8
+
+
+
+
+
+
diff --git a/src/ch/eitchnet/privilege/handler/DefaultEncryptionHandler.java b/src/main/java/ch/eitchnet/privilege/handler/DefaultEncryptionHandler.java
similarity index 100%
rename from src/ch/eitchnet/privilege/handler/DefaultEncryptionHandler.java
rename to src/main/java/ch/eitchnet/privilege/handler/DefaultEncryptionHandler.java
diff --git a/src/ch/eitchnet/privilege/handler/DefaultPrivilegeHandler.java b/src/main/java/ch/eitchnet/privilege/handler/DefaultPrivilegeHandler.java
similarity index 100%
rename from src/ch/eitchnet/privilege/handler/DefaultPrivilegeHandler.java
rename to src/main/java/ch/eitchnet/privilege/handler/DefaultPrivilegeHandler.java
diff --git a/src/ch/eitchnet/privilege/handler/EncryptionHandler.java b/src/main/java/ch/eitchnet/privilege/handler/EncryptionHandler.java
similarity index 100%
rename from src/ch/eitchnet/privilege/handler/EncryptionHandler.java
rename to src/main/java/ch/eitchnet/privilege/handler/EncryptionHandler.java
diff --git a/src/ch/eitchnet/privilege/handler/PersistenceHandler.java b/src/main/java/ch/eitchnet/privilege/handler/PersistenceHandler.java
similarity index 100%
rename from src/ch/eitchnet/privilege/handler/PersistenceHandler.java
rename to src/main/java/ch/eitchnet/privilege/handler/PersistenceHandler.java
diff --git a/src/ch/eitchnet/privilege/handler/PrivilegeHandler.java b/src/main/java/ch/eitchnet/privilege/handler/PrivilegeHandler.java
similarity index 100%
rename from src/ch/eitchnet/privilege/handler/PrivilegeHandler.java
rename to src/main/java/ch/eitchnet/privilege/handler/PrivilegeHandler.java
diff --git a/src/ch/eitchnet/privilege/handler/XmlPersistenceHandler.java b/src/main/java/ch/eitchnet/privilege/handler/XmlPersistenceHandler.java
similarity index 100%
rename from src/ch/eitchnet/privilege/handler/XmlPersistenceHandler.java
rename to src/main/java/ch/eitchnet/privilege/handler/XmlPersistenceHandler.java
diff --git a/src/ch/eitchnet/privilege/helper/BootstrapConfigurationHelper.java b/src/main/java/ch/eitchnet/privilege/helper/BootstrapConfigurationHelper.java
similarity index 100%
rename from src/ch/eitchnet/privilege/helper/BootstrapConfigurationHelper.java
rename to src/main/java/ch/eitchnet/privilege/helper/BootstrapConfigurationHelper.java
diff --git a/src/ch/eitchnet/privilege/helper/ClassHelper.java b/src/main/java/ch/eitchnet/privilege/helper/ClassHelper.java
similarity index 100%
rename from src/ch/eitchnet/privilege/helper/ClassHelper.java
rename to src/main/java/ch/eitchnet/privilege/helper/ClassHelper.java
diff --git a/src/ch/eitchnet/privilege/helper/HashHelper.java b/src/main/java/ch/eitchnet/privilege/helper/HashHelper.java
similarity index 100%
rename from src/ch/eitchnet/privilege/helper/HashHelper.java
rename to src/main/java/ch/eitchnet/privilege/helper/HashHelper.java
diff --git a/src/ch/eitchnet/privilege/helper/InitializationHelper.java b/src/main/java/ch/eitchnet/privilege/helper/InitializationHelper.java
similarity index 100%
rename from src/ch/eitchnet/privilege/helper/InitializationHelper.java
rename to src/main/java/ch/eitchnet/privilege/helper/InitializationHelper.java
diff --git a/src/ch/eitchnet/privilege/helper/PasswordCreaterUI.java b/src/main/java/ch/eitchnet/privilege/helper/PasswordCreaterUI.java
similarity index 100%
rename from src/ch/eitchnet/privilege/helper/PasswordCreaterUI.java
rename to src/main/java/ch/eitchnet/privilege/helper/PasswordCreaterUI.java
diff --git a/src/ch/eitchnet/privilege/helper/PasswordCreator.java b/src/main/java/ch/eitchnet/privilege/helper/PasswordCreator.java
similarity index 100%
rename from src/ch/eitchnet/privilege/helper/PasswordCreator.java
rename to src/main/java/ch/eitchnet/privilege/helper/PasswordCreator.java
diff --git a/src/ch/eitchnet/privilege/helper/XmlConstants.java b/src/main/java/ch/eitchnet/privilege/helper/XmlConstants.java
similarity index 100%
rename from src/ch/eitchnet/privilege/helper/XmlConstants.java
rename to src/main/java/ch/eitchnet/privilege/helper/XmlConstants.java
diff --git a/src/ch/eitchnet/privilege/helper/XmlHelper.java b/src/main/java/ch/eitchnet/privilege/helper/XmlHelper.java
similarity index 100%
rename from src/ch/eitchnet/privilege/helper/XmlHelper.java
rename to src/main/java/ch/eitchnet/privilege/helper/XmlHelper.java
diff --git a/src/ch/eitchnet/privilege/i18n/AccessDeniedException.java b/src/main/java/ch/eitchnet/privilege/i18n/AccessDeniedException.java
similarity index 100%
rename from src/ch/eitchnet/privilege/i18n/AccessDeniedException.java
rename to src/main/java/ch/eitchnet/privilege/i18n/AccessDeniedException.java
diff --git a/src/ch/eitchnet/privilege/i18n/PrivilegeException.java b/src/main/java/ch/eitchnet/privilege/i18n/PrivilegeException.java
similarity index 100%
rename from src/ch/eitchnet/privilege/i18n/PrivilegeException.java
rename to src/main/java/ch/eitchnet/privilege/i18n/PrivilegeException.java
diff --git a/src/ch/eitchnet/privilege/model/Certificate.java b/src/main/java/ch/eitchnet/privilege/model/Certificate.java
similarity index 100%
rename from src/ch/eitchnet/privilege/model/Certificate.java
rename to src/main/java/ch/eitchnet/privilege/model/Certificate.java
diff --git a/src/ch/eitchnet/privilege/model/PrivilegeRep.java b/src/main/java/ch/eitchnet/privilege/model/PrivilegeRep.java
similarity index 100%
rename from src/ch/eitchnet/privilege/model/PrivilegeRep.java
rename to src/main/java/ch/eitchnet/privilege/model/PrivilegeRep.java
diff --git a/src/ch/eitchnet/privilege/model/Restrictable.java b/src/main/java/ch/eitchnet/privilege/model/Restrictable.java
similarity index 100%
rename from src/ch/eitchnet/privilege/model/Restrictable.java
rename to src/main/java/ch/eitchnet/privilege/model/Restrictable.java
diff --git a/src/ch/eitchnet/privilege/model/RoleRep.java b/src/main/java/ch/eitchnet/privilege/model/RoleRep.java
similarity index 100%
rename from src/ch/eitchnet/privilege/model/RoleRep.java
rename to src/main/java/ch/eitchnet/privilege/model/RoleRep.java
diff --git a/src/ch/eitchnet/privilege/model/UserRep.java b/src/main/java/ch/eitchnet/privilege/model/UserRep.java
similarity index 100%
rename from src/ch/eitchnet/privilege/model/UserRep.java
rename to src/main/java/ch/eitchnet/privilege/model/UserRep.java
diff --git a/src/ch/eitchnet/privilege/model/UserState.java b/src/main/java/ch/eitchnet/privilege/model/UserState.java
similarity index 100%
rename from src/ch/eitchnet/privilege/model/UserState.java
rename to src/main/java/ch/eitchnet/privilege/model/UserState.java
diff --git a/src/ch/eitchnet/privilege/model/internal/Privilege.java b/src/main/java/ch/eitchnet/privilege/model/internal/Privilege.java
similarity index 100%
rename from src/ch/eitchnet/privilege/model/internal/Privilege.java
rename to src/main/java/ch/eitchnet/privilege/model/internal/Privilege.java
diff --git a/src/ch/eitchnet/privilege/model/internal/Role.java b/src/main/java/ch/eitchnet/privilege/model/internal/Role.java
similarity index 100%
rename from src/ch/eitchnet/privilege/model/internal/Role.java
rename to src/main/java/ch/eitchnet/privilege/model/internal/Role.java
diff --git a/src/ch/eitchnet/privilege/model/internal/Session.java b/src/main/java/ch/eitchnet/privilege/model/internal/Session.java
similarity index 100%
rename from src/ch/eitchnet/privilege/model/internal/Session.java
rename to src/main/java/ch/eitchnet/privilege/model/internal/Session.java
diff --git a/src/ch/eitchnet/privilege/model/internal/User.java b/src/main/java/ch/eitchnet/privilege/model/internal/User.java
similarity index 100%
rename from src/ch/eitchnet/privilege/model/internal/User.java
rename to src/main/java/ch/eitchnet/privilege/model/internal/User.java
diff --git a/src/ch/eitchnet/privilege/policy/DefaultPrivilege.java b/src/main/java/ch/eitchnet/privilege/policy/DefaultPrivilege.java
similarity index 100%
rename from src/ch/eitchnet/privilege/policy/DefaultPrivilege.java
rename to src/main/java/ch/eitchnet/privilege/policy/DefaultPrivilege.java
diff --git a/src/ch/eitchnet/privilege/policy/PrivilegePolicy.java b/src/main/java/ch/eitchnet/privilege/policy/PrivilegePolicy.java
similarity index 100%
rename from src/ch/eitchnet/privilege/policy/PrivilegePolicy.java
rename to src/main/java/ch/eitchnet/privilege/policy/PrivilegePolicy.java
diff --git a/test/ch/eitchnet/privilege/test/PrivilegeTest.java b/src/test/java/ch/eitchnet/privilege/test/PrivilegeTest.java
similarity index 100%
rename from test/ch/eitchnet/privilege/test/PrivilegeTest.java
rename to src/test/java/ch/eitchnet/privilege/test/PrivilegeTest.java
diff --git a/test/ch/eitchnet/privilege/test/TestRestrictable.java b/src/test/java/ch/eitchnet/privilege/test/TestRestrictable.java
similarity index 100%
rename from test/ch/eitchnet/privilege/test/TestRestrictable.java
rename to src/test/java/ch/eitchnet/privilege/test/TestRestrictable.java