diff --git a/libwccl/CMakeLists.txt b/libwccl/CMakeLists.txt
index 13dacc5f087b986d720c66e3156a6f0e134e1c0d..25eb988fef67ab1c409fbf0a2adca7f8f89ba992 100644
--- a/libwccl/CMakeLists.txt
+++ b/libwccl/CMakeLists.txt
@@ -27,6 +27,7 @@ endif(WIN32)
 
 SET(libwccl_STAT_SRC
 	exception.cpp
+	ops/action.cpp
 	ops/formatters.cpp
 	ops/functions/bool/iteration.cpp
 	ops/functions/bool/iterations/atleast.cpp
diff --git a/libwccl/ops/action.cpp b/libwccl/ops/action.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4bcf570ac86635584325057200a9e3e948224a23
--- /dev/null
+++ b/libwccl/ops/action.cpp
@@ -0,0 +1,15 @@
+#include <libwccl/ops/action.h>
+#include <libwccl/ops/functions/constant.h>
+namespace Wccl {
+
+namespace detail {
+
+boost::shared_ptr<Function<Position> > CurrentPos()
+{
+	static boost::shared_ptr<Function<Position> > current(
+			new Constant<Position>(Position(0)));
+	return current;
+}
+
+} /* end ns detail */
+} /* end ns Wccl */
diff --git a/libwccl/ops/action.h b/libwccl/ops/action.h
index 666030ce58376dc7c43d00e5c0f876a8af710d0d..12c21f60b467dc91c8dfc10ebc30e56684091e61 100644
--- a/libwccl/ops/action.h
+++ b/libwccl/ops/action.h
@@ -1,14 +1,9 @@
 #ifndef LIBWCCL_OPS_ACTION_H
 #define LIBWCCL_OPS_ACTION_H
 
-#include <boost/shared_ptr.hpp>
-#include <boost/assert.hpp>
-#include <boost/mpl/assert.hpp>
-#include <boost/type_traits/is_base_of.hpp>
-
-#include <libwccl/ops/expression.h>
-#include <libwccl/values/value.h>
 #include <libwccl/ops/actionexeccontext.h>
+#include <libwccl/ops/function.h>
+
 
 namespace Wccl {
 
@@ -28,6 +23,10 @@ public:
 	virtual Bool execute(const ActionExecContext& context) const = 0;
 };
 
+namespace detail {
+	boost::shared_ptr<Function<Position> > CurrentPos();
+}
+
 } /* end ns Wccl */
 
 #endif // LIBWCCL_OPS_ACTION_H