diff --git a/mmm-util-query/README.md b/mmm-util-query/README.md
new file mode 100644
index 000000000..98cf891a0
--- /dev/null
+++ b/mmm-util-query/README.md
@@ -0,0 +1,12 @@
+# Mature Modular Meta-framework (mmm)
+
+![logo](https://raw.github.com/m-m-m/mmm/master/src/site/resources/images/logo.png)
+
+**Welcome to the wonderful world of [mmm](http://m-m-m.sourceforge.net/index.html)!**
+
+## mmm-util-property
+
+This module is part of the [mmm-util project](../README.md) and brings extended property and bean support including
+* [Properties](http://m-m-m.github.io/maven/apidocs/net/sf/mmm/util/property/api/package-summary.html#package.description) extending JavaFx properties with type reflection and validation support.
+* [Bean](http://m-m-m.github.io/maven/apidocs/net/sf/mmm/util/bean/api/package-summary.html#package.description) to implement beans as interface without writing any boiler-plate code.
+* and much more...
diff --git a/mmm-util-query/pom.xml b/mmm-util-query/pom.xml
new file mode 100644
index 000000000..e0c31d851
--- /dev/null
+++ b/mmm-util-query/pom.xml
@@ -0,0 +1,52 @@
+
+
+ 4.0.0
+
+ net.sf.m-m-m
+ mmm-util-modules
+ dev-SNAPSHOT
+ ../mmm-util-modules/pom.xml
+
+ mmm-util-query
+ ${net.sf.mmm.util.version}
+ jar
+ ${project.artifactId}
+ This project allows to build queries with a fluent and type-safe API.
+
+
+
+ ${project.groupId}
+ mmm-util-property
+ ${net.sf.mmm.util.version}
+
+
+ ${project.groupId}
+ mmm-util-test
+ test
+
+
+ org.hibernate.javax.persistence
+ hibernate-jpa-2.1-api
+ true
+
+
+ org.hibernate
+ hibernate-entitymanager
+ test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ 1.8
+
+
+
+
+
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/DeleteStatement.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/DeleteStatement.java
similarity index 77%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/DeleteStatement.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/DeleteStatement.java
index a2aa1ed45..7716cb8b5 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/DeleteStatement.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/DeleteStatement.java
@@ -1,9 +1,9 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query;
+package net.sf.mmm.util.query.api;
-import net.sf.mmm.util.property.api.query.feature.FeatureLimit;
-import net.sf.mmm.util.property.api.query.feature.FeatureWhere;
+import net.sf.mmm.util.query.api.feature.FeatureLimit;
+import net.sf.mmm.util.query.api.feature.FeatureWhere;
/**
* Extends {@link Statement} for {@code UPDATE} statements.
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/InsertStatement.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/InsertStatement.java
similarity index 92%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/InsertStatement.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/InsertStatement.java
index abf7cc7db..55e6469a3 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/InsertStatement.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/InsertStatement.java
@@ -1,6 +1,6 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query;
+package net.sf.mmm.util.query.api;
/**
* Extends {@link Statement} for {@code INSERT} statements.
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/ModifyStatement.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/ModifyStatement.java
similarity index 85%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/ModifyStatement.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/ModifyStatement.java
index a5d521d83..a49187a79 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/ModifyStatement.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/ModifyStatement.java
@@ -1,8 +1,8 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query;
+package net.sf.mmm.util.query.api;
-import net.sf.mmm.util.property.api.query.feature.FeatureModify;
+import net.sf.mmm.util.query.api.feature.FeatureModify;
/**
* Extends {@link Statement} for modifying data.
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/SelectStatement.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/SelectStatement.java
similarity index 67%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/SelectStatement.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/SelectStatement.java
index 4f0950f4d..f01b2edbb 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/SelectStatement.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/SelectStatement.java
@@ -1,12 +1,12 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query;
+package net.sf.mmm.util.query.api;
-import net.sf.mmm.util.property.api.query.feature.FeatureFetch;
-import net.sf.mmm.util.property.api.query.feature.FeatureGroupBy;
-import net.sf.mmm.util.property.api.query.feature.FeatureOrderBy;
-import net.sf.mmm.util.property.api.query.feature.FeaturePaging;
-import net.sf.mmm.util.property.api.query.feature.FeatureWhere;
+import net.sf.mmm.util.query.api.feature.FeatureFetch;
+import net.sf.mmm.util.query.api.feature.FeatureGroupBy;
+import net.sf.mmm.util.query.api.feature.FeatureOrderBy;
+import net.sf.mmm.util.query.api.feature.FeaturePaging;
+import net.sf.mmm.util.query.api.feature.FeatureWhere;
/**
* Extends {@link Statement} for regular {@code SELECT} statements to retrieve results (unlike {@link InsertStatement
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/Statement.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/Statement.java
similarity index 93%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/Statement.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/Statement.java
index a6b55652b..275b7ab1f 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/Statement.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/Statement.java
@@ -1,12 +1,12 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query;
+package net.sf.mmm.util.query.api;
import java.util.List;
import net.sf.mmm.util.property.api.expression.Expression;
import net.sf.mmm.util.property.api.path.PropertyPath;
-import net.sf.mmm.util.property.base.query.SqlDialect;
+import net.sf.mmm.util.query.base.SqlDialect;
/**
* This interface allows to build and execute type-safe query statements using a fluent API based on
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/StoreStatement.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/StoreStatement.java
similarity index 85%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/StoreStatement.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/StoreStatement.java
index f4606ce71..d79671959 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/StoreStatement.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/StoreStatement.java
@@ -1,8 +1,8 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query;
+package net.sf.mmm.util.query.api;
-import net.sf.mmm.util.property.api.query.feature.FeatureSet;
+import net.sf.mmm.util.query.api.feature.FeatureSet;
/**
* Extends {@link Statement} for storing data.
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/UpdateStatement.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/UpdateStatement.java
similarity index 77%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/UpdateStatement.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/UpdateStatement.java
index 4b9b42fd7..9ad459470 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/UpdateStatement.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/UpdateStatement.java
@@ -1,9 +1,9 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query;
+package net.sf.mmm.util.query.api;
-import net.sf.mmm.util.property.api.query.feature.FeatureLimit;
-import net.sf.mmm.util.property.api.query.feature.FeatureWhere;
+import net.sf.mmm.util.query.api.feature.FeatureLimit;
+import net.sf.mmm.util.query.api.feature.FeatureWhere;
/**
* Extends {@link Statement} for {@code UPDATE} statements.
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureFetch.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureFetch.java
similarity index 87%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureFetch.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureFetch.java
index cbef30640..461c1c728 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureFetch.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureFetch.java
@@ -1,14 +1,14 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query.feature;
+package net.sf.mmm.util.query.api.feature;
import java.util.List;
/**
- * A {@link FeatureFetch} is for a regular query {@link net.sf.mmm.util.property.api.query.Statement} to fetch and
+ * A {@link FeatureFetch} is for a regular query {@link net.sf.mmm.util.query.api.Statement} to fetch and
* retrieve results.
*
- * @see net.sf.mmm.util.property.api.query.SelectStatement
+ * @see net.sf.mmm.util.query.api.SelectStatement
*
* @param the generic type of the entity to fetch.
*
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureGroupBy.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureGroupBy.java
similarity index 88%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureGroupBy.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureGroupBy.java
index 28b38455b..fbdccaa22 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureGroupBy.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureGroupBy.java
@@ -1,11 +1,11 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query.feature;
+package net.sf.mmm.util.query.api.feature;
import net.sf.mmm.util.property.api.path.PropertyPath;
/**
- * This is the abstract interface for a query {@link net.sf.mmm.util.property.api.query.Statement} allowing a
+ * This is the abstract interface for a query {@link net.sf.mmm.util.query.api.Statement} allowing a
* {@link #groupBy(PropertyPath) GROUP BY clause}.
*
* @param the generic type of this query itself (this) for fluent API calls.
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureHaving.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureHaving.java
similarity index 90%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureHaving.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureHaving.java
index 92ab6af9f..687136218 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureHaving.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureHaving.java
@@ -1,11 +1,11 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query.feature;
+package net.sf.mmm.util.query.api.feature;
import net.sf.mmm.util.property.api.expression.Expression;
/**
- * This is the abstract interface for a query {@link net.sf.mmm.util.property.api.query.Statement} allowing a
+ * This is the abstract interface for a query {@link net.sf.mmm.util.query.api.Statement} allowing a
* {@link #having(Expression...) HAVING clause}.
*
* @param the generic type of this query itself (this) for fluent API calls.
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureLimit.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureLimit.java
similarity index 87%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureLimit.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureLimit.java
index 2a30449d7..b3bc04561 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureLimit.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureLimit.java
@@ -1,9 +1,9 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query.feature;
+package net.sf.mmm.util.query.api.feature;
/**
- * This is the abstract interface for a query {@link net.sf.mmm.util.property.api.query.Statement} with support for
+ * This is the abstract interface for a query {@link net.sf.mmm.util.query.api.Statement} with support for
* {@link #limit(long)}.
*
* @param the generic type of this query itself (this) for fluent API calls.
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureModify.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureModify.java
similarity index 67%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureModify.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureModify.java
index 498bb1d92..68ea84056 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureModify.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureModify.java
@@ -1,13 +1,13 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query.feature;
+package net.sf.mmm.util.query.api.feature;
-import net.sf.mmm.util.property.api.query.Statement;
+import net.sf.mmm.util.query.api.Statement;
/**
- * Extends {@link Statement} for a query {@link net.sf.mmm.util.property.api.query.Statement} that modifies data.
+ * Extends {@link Statement} for a query {@link net.sf.mmm.util.query.api.Statement} that modifies data.
*
- * @see net.sf.mmm.util.property.api.query.ModifyStatement
+ * @see net.sf.mmm.util.query.api.ModifyStatement
*
* @author hohwille
* @since 8.0.0
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureOrderBy.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureOrderBy.java
similarity index 92%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureOrderBy.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureOrderBy.java
index 18df8cfd2..aa5c7533a 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureOrderBy.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureOrderBy.java
@@ -1,12 +1,12 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query.feature;
+package net.sf.mmm.util.query.api.feature;
import net.sf.mmm.util.lang.api.SortOrder;
import net.sf.mmm.util.property.api.path.PropertyPath;
/**
- * This is the abstract interface for a query {@link net.sf.mmm.util.property.api.query.Statement} allowing an
+ * This is the abstract interface for a query {@link net.sf.mmm.util.query.api.Statement} allowing an
* {@link #orderBy(PropertyPath, SortOrder) ORDER BY clause}.
*
* @param the generic type of this query itself (this) for fluent API calls.
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeaturePaging.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeaturePaging.java
similarity index 88%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeaturePaging.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeaturePaging.java
index 957574309..8b3db6e74 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeaturePaging.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeaturePaging.java
@@ -1,9 +1,9 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query.feature;
+package net.sf.mmm.util.query.api.feature;
/**
- * This is the abstract interface for a query {@link net.sf.mmm.util.property.api.query.Statement} with paging support
+ * This is the abstract interface for a query {@link net.sf.mmm.util.query.api.Statement} with paging support
* via {@link #limit(long)} and {@link #offset(long)}.
*
* @param the generic type of this query itself (this) for fluent API calls.
diff --git a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureSet.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureSet.java
similarity index 94%
rename from mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureSet.java
rename to mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureSet.java
index 230abb39f..b09cd452a 100644
--- a/mmm-util-property/src/main/java/net/sf/mmm/util/property/api/query/feature/FeatureSet.java
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureSet.java
@@ -1,11 +1,11 @@
/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
* http://www.apache.org/licenses/LICENSE-2.0 */
-package net.sf.mmm.util.property.api.query.feature;
+package net.sf.mmm.util.query.api.feature;
import net.sf.mmm.util.property.api.path.PropertyPath;
/**
- * This is the abstract interface for a query {@link net.sf.mmm.util.property.api.query.Statement} allowing a
+ * This is the abstract interface for a query {@link net.sf.mmm.util.query.api.Statement} allowing a
* {@link #set(PropertyPath, Object) SET clause}.
*
* @param the generic type of this query itself (this) for fluent API calls.
diff --git a/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureValues.java b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureValues.java
new file mode 100644
index 000000000..6b96162cf
--- /dev/null
+++ b/mmm-util-query/src/main/java/net/sf/mmm/util/query/api/feature/FeatureValues.java
@@ -0,0 +1,34 @@
+/* Copyright (c) The m-m-m Team, Licensed under the Apache License, Version 2.0
+ * http://www.apache.org/licenses/LICENSE-2.0 */
+package net.sf.mmm.util.query.api.feature;
+
+import net.sf.mmm.util.property.api.path.PropertyPath;
+
+/**
+ * This is the abstract interface for a query {@link net.sf.mmm.util.query.api.Statement} allowing a
+ * {@link #value(PropertyPath, Object) VALUES clause}. For each invocation of {@link #value(PropertyPath, Object)
+ * value(pI, vI)} a value binding is added so in the end the resulting SQL fragment will be:
+ *
+ *