Index: src/Filling/Predicates/Ops_FillPredicate.cpp
===================================================================
--- src/Filling/Predicates/Ops_FillPredicate.cpp	(revision 83fd7d028ca39a4cd002c097850aa966f267121e)
+++ src/Filling/Predicates/Ops_FillPredicate.cpp	(revision 83fd7d028ca39a4cd002c097850aa966f267121e)
@@ -0,0 +1,44 @@
+/*
+ * Project: MoleCuilder
+ * Description: creates and alters molecular systems
+ * Copyright (C)  2012 University of Bonn. All rights reserved.
+ * Please see the LICENSE file or "Copyright notice" in builder.cpp for details.
+ */
+
+/*
+ * Ops_FillPredicate.cpp
+ *
+ *  Created on: 17.01.2012
+ *      Author: heber
+ */
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "CodePatterns/MemDebug.hpp"
+
+#include "Ops_FillPredicate.hpp"
+#include "Ops_FillPredicate_impl.hpp"
+
+FillPredicate operator&&(const FillPredicate &a, const FillPredicate &b)
+{
+  FillPredicate::impl_ptr impl_ptr = FillPredicate::impl_ptr(
+      new And_FillPredicate(getFillPredicateImpl(a),getFillPredicateImpl(b)));
+	return FillPredicate(impl_ptr);
+}
+
+FillPredicate operator||(const FillPredicate &a, const FillPredicate &b)
+{
+  FillPredicate::impl_ptr impl_ptr = FillPredicate::impl_ptr(
+      new Or_FillPredicate(getFillPredicateImpl(a),getFillPredicateImpl(b)));
+  return FillPredicate(impl_ptr);
+}
+
+FillPredicate operator!(const FillPredicate &a)
+{
+  FillPredicate::impl_ptr impl_ptr = FillPredicate::impl_ptr(
+      new Not_FillPredicate(getFillPredicateImpl(a)));
+  return FillPredicate(impl_ptr);
+}
Index: src/Filling/Predicates/Ops_FillPredicate.hpp
===================================================================
--- src/Filling/Predicates/Ops_FillPredicate.hpp	(revision 83fd7d028ca39a4cd002c097850aa966f267121e)
+++ src/Filling/Predicates/Ops_FillPredicate.hpp	(revision 83fd7d028ca39a4cd002c097850aa966f267121e)
@@ -0,0 +1,24 @@
+/*
+ * Ops_FillPredicate.hpp
+ *
+ *  Created on: 17.01.2012
+ *      Author: heber
+ */
+
+#ifndef OPS_FILLPREDICATE_HPP_
+#define OPS_FILLPREDICATE_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "FillPredicate.hpp"
+
+
+FillPredicate operator&&(const FillPredicate &a, const FillPredicate &b);
+FillPredicate operator||(const FillPredicate &a, const FillPredicate &b);
+FillPredicate operator!(const FillPredicate &a);
+
+
+#endif /* OPS_FILLPREDICATE_HPP_ */
Index: src/Filling/Predicates/Ops_FillPredicate_impl.hpp
===================================================================
--- src/Filling/Predicates/Ops_FillPredicate_impl.hpp	(revision 83fd7d028ca39a4cd002c097850aa966f267121e)
+++ src/Filling/Predicates/Ops_FillPredicate_impl.hpp	(revision 83fd7d028ca39a4cd002c097850aa966f267121e)
@@ -0,0 +1,80 @@
+/*
+ * Ops_FillPredicate_impl.hpp
+ *
+ *  Created on: 17.01.2012
+ *      Author: heber
+ */
+
+#ifndef OPS_FILLPREDICATE_IMPL_HPP_
+#define OPS_FILLPREDICATE_IMPL_HPP_
+
+// include config.h
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "FillPredicateBase.hpp"
+
+/** Logical AND composition of two FillPredicate's.
+ *
+ */
+class And_FillPredicate : public FillPredicateBase
+{
+public:
+	And_FillPredicate(const FillPredicate::impl_ptr &_a, const FillPredicate::impl_ptr &_b) :
+		a(_a), b(_b)
+	{}
+	virtual ~And_FillPredicate()
+	{}
+
+	bool operator()(const Node &n) const {
+		return (*a)(n) && (*b)(n);
+	}
+
+private:
+	FillPredicate::impl_ptr a;
+	FillPredicate::impl_ptr b;
+};
+
+/** Logical OR composition of two FillPredicate's.
+ *
+ */
+class Or_FillPredicate : public FillPredicateBase
+{
+public:
+	Or_FillPredicate(const FillPredicate::impl_ptr &_a, const FillPredicate::impl_ptr &_b) :
+		a(_a), b(_b)
+	{}
+	virtual ~Or_FillPredicate()
+	{}
+
+	bool operator()(const Node &n) const {
+		return (*a)(n) || (*b)(n);
+	}
+
+private:
+	FillPredicate::impl_ptr a;
+	FillPredicate::impl_ptr b;
+};
+
+/** Logical NOT composition of two FillPredicate's.
+ *
+ */
+class Not_FillPredicate : public FillPredicateBase
+{
+public:
+	Not_FillPredicate(const FillPredicate::impl_ptr &_a) :
+		a(_a)
+	{}
+	virtual ~Not_FillPredicate()
+	{}
+
+	bool operator()(const Node &n) const {
+		return !(*a)(n);
+	}
+
+private:
+	FillPredicate::impl_ptr a;
+};
+
+#endif /* OPS_FILLPREDICATE_IMPL_HPP_ */
