diff --git a/src/main/java/teetime/stage/basic/AbstractFilter.java b/src/main/java/teetime/stage/basic/AbstractFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..7a0e11881304bbc39b8e08cfa7ffd4aa8bf51257
--- /dev/null
+++ b/src/main/java/teetime/stage/basic/AbstractFilter.java
@@ -0,0 +1,8 @@
+package teetime.stage.basic;
+
+public abstract class AbstractFilter<E> extends AbstractTransform<E, E> {
+
+	protected AbstractFilter() {
+		super();
+	}
+}
diff --git a/src/main/java/teetime/stage/basic/AbstractTransform.java b/src/main/java/teetime/stage/basic/AbstractTransform.java
new file mode 100644
index 0000000000000000000000000000000000000000..7b4892925f92cf3e7c31d291c736068237083502
--- /dev/null
+++ b/src/main/java/teetime/stage/basic/AbstractTransform.java
@@ -0,0 +1,17 @@
+package teetime.stage.basic;
+
+import teetime.framework.AbstractConsumerStage;
+import teetime.framework.OutputPort;
+
+public abstract class AbstractTransform<I, O> extends AbstractConsumerStage<I> {
+
+	private final OutputPort<O> outputPort = createOutputPort();
+
+	protected AbstractTransform() {
+		super();
+	}
+
+	public OutputPort<O> getOutputPort() {
+		return outputPort;
+	}
+}
diff --git a/src/main/java/teetime/stage/basic/AbstractTrigger.java b/src/main/java/teetime/stage/basic/AbstractTrigger.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d528929c50735ae2d2e62005d4483b83e059280
--- /dev/null
+++ b/src/main/java/teetime/stage/basic/AbstractTrigger.java
@@ -0,0 +1,29 @@
+package teetime.stage.basic;
+
+import teetime.framework.AbstractStage;
+import teetime.framework.InputPort;
+import teetime.framework.OutputPort;
+
+abstract class AbstractTrigger<I, T, O> extends AbstractStage {
+
+	private final InputPort<I> inputPort = createInputPort();
+	private final InputPort<T> triggerInputPort = createInputPort();
+	private final OutputPort<O> outputPort = createOutputPort();
+
+	protected AbstractTrigger() {
+		super();
+	}
+
+	@Override
+	protected void executeWithPorts() {
+		// TODO Auto-generated method stub
+
+	}
+
+	@Override
+	public void onTerminating() throws Exception {
+		// TODO Auto-generated method stub
+		super.onTerminating();
+	}
+
+}
diff --git a/src/site/markdown/wiki b/src/site/markdown/wiki
index 63ccbbc87bd2c0e6599ca91502149dba3cfb99de..0e4474577e1f49bc96e734c286b2d9e0363895e8 160000
--- a/src/site/markdown/wiki
+++ b/src/site/markdown/wiki
@@ -1 +1 @@
-Subproject commit 63ccbbc87bd2c0e6599ca91502149dba3cfb99de
+Subproject commit 0e4474577e1f49bc96e734c286b2d9e0363895e8