diff --git a/src/main/java/org/apache/ode/jacob/ap/ChannelType.java b/src/main/java/org/apache/ode/jacob/ChannelType.java
similarity index 76%
rename from src/main/java/org/apache/ode/jacob/ap/ChannelType.java
rename to src/main/java/org/apache/ode/jacob/ChannelType.java
index 5d18bc0..5279d08 100644
--- a/src/main/java/org/apache/ode/jacob/ap/ChannelType.java
+++ b/src/main/java/org/apache/ode/jacob/ChannelType.java
@@ -16,12 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.ode.jacob.ap;
+package org.apache.ode.jacob;
+
+import java.io.Serializable;
 
 /**
- * Annotation used to indicate that an interface is a JACOB channel interface.
- * @author Maciej Szefler <mszefler at gmail dot com>
+ * Marker interface extended by channel interfaces.
+ * TODO: evaluate if an annotation, although slower, would offer a more elegant approach
  */
-public @interface ChannelType {
-
+public interface ChannelType extends Serializable {
 }
diff --git a/src/main/java/org/apache/ode/jacob/ap/ChannelType.java b/src/main/java/org/apache/ode/jacob/ProcessUtil.java
similarity index 67%
copy from src/main/java/org/apache/ode/jacob/ap/ChannelType.java
copy to src/main/java/org/apache/ode/jacob/ProcessUtil.java
index 5d18bc0..e11a34d 100644
--- a/src/main/java/org/apache/ode/jacob/ap/ChannelType.java
+++ b/src/main/java/org/apache/ode/jacob/ProcessUtil.java
@@ -16,12 +16,19 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.ode.jacob.ap;
+package org.apache.ode.jacob;
 
-/**
- * Annotation used to indicate that an interface is a JACOB channel interface.
- * @author Maciej Szefler <mszefler at gmail dot com>
- */
-public @interface ChannelType {
 
+public final class ProcessUtil {
+    private ProcessUtil() {
+        // Utility class
+    }
+
+    public static String exportChannel(ChannelType channel) {
+    	if (channel instanceof Channel) {
+    		return ((Channel)channel).export();
+    	}
+    	// TODO: add a check for null?
+        throw new RuntimeException("Invalid proxy type " + channel.getClass());
+    }
 }
diff --git a/src/main/java/org/apache/ode/jacob/Synch.java b/src/main/java/org/apache/ode/jacob/Synch.java
index cebb64a..dbe6507 100644
--- a/src/main/java/org/apache/ode/jacob/Synch.java
+++ b/src/main/java/org/apache/ode/jacob/Synch.java
@@ -18,9 +18,6 @@
  */
 package org.apache.ode.jacob;
 
-import java.io.Serializable;
-
-import org.apache.ode.jacob.ap.ChannelType;
 
 /**
  * Synch represents a synchronous invocation callback notification.
@@ -30,7 +27,8 @@
  * @author Maciej Szefler <a href="mailto:mbs@fivesight.com">mbs</a>
  */
 
-@ChannelType
-public interface Synch extends Serializable {
-    public void ret();
+public interface Synch extends ChannelType {
+
+	public void ret();
+
 }
diff --git a/src/main/java/org/apache/ode/jacob/Val.java b/src/main/java/org/apache/ode/jacob/Val.java
index bc86732..2db6f7e 100644
--- a/src/main/java/org/apache/ode/jacob/Val.java
+++ b/src/main/java/org/apache/ode/jacob/Val.java
@@ -18,14 +18,12 @@
  */
 package org.apache.ode.jacob;
 
-import java.io.Serializable;
-
-import org.apache.ode.jacob.ap.ChannelType;
 
 /**
  * Generic return-value channel type.
  */
-@ChannelType
-public interface Val extends Serializable {
-  public void val(Object retVal);
+public interface Val extends ChannelType {
+
+	public void val(Object retVal);
+
 }
diff --git a/src/test/java/org/apache/ode/jacob/examples/cell/Cell.java b/src/test/java/org/apache/ode/jacob/examples/cell/Cell.java
index 14089e0..0058b39 100644
--- a/src/test/java/org/apache/ode/jacob/examples/cell/Cell.java
+++ b/src/test/java/org/apache/ode/jacob/examples/cell/Cell.java
@@ -18,27 +18,25 @@
  */
 package org.apache.ode.jacob.examples.cell;
 
-import org.apache.ode.jacob.Val;
-import org.apache.ode.jacob.ap.ChannelType;
 
+import org.apache.ode.jacob.ChannelType;
+import org.apache.ode.jacob.Val;
 
 /**
  * Channel type for a cell. The channel allows reading of and setting the values of a cell.
- *
- * @jacob.kind
  */
-@ChannelType
-public interface Cell  {
+public interface Cell extends ChannelType {
 
-  /**
-   * Read the value of the cell.
-   * @param replyTo channel to which the value of the cell is sent
-   */
-  public void read(Val replyTo);
+    /**
+     * Read the value of the cell.
+     * @param replyTo channel to which the value of the cell is sent
+     */
+    public void read(Val replyTo);
 
-  /**
-   * Write the value of the cell.
-   * @param newVal new value of the cell
-   */
-  public void write(Object newVal);
+    /**
+     * Write the value of the cell.
+     * @param newVal new value of the cell
+     */
+    public void write(Object newVal);
+
 }
diff --git a/src/test/java/org/apache/ode/jacob/examples/eratosthenes/NaturalNumberStream.java b/src/test/java/org/apache/ode/jacob/examples/eratosthenes/NaturalNumberStream.java
index 55272b8..8b911ed 100644
--- a/src/test/java/org/apache/ode/jacob/examples/eratosthenes/NaturalNumberStream.java
+++ b/src/test/java/org/apache/ode/jacob/examples/eratosthenes/NaturalNumberStream.java
@@ -18,8 +18,9 @@
  */
 package org.apache.ode.jacob.examples.eratosthenes;
 
+
+import org.apache.ode.jacob.ChannelType;
 import org.apache.ode.jacob.SynchChannel;
-import org.apache.ode.jacob.ap.ChannelType;
 
 /**
  * DOCUMENTME.
@@ -28,7 +29,8 @@
  * @jacob.kind
  * @author Maciej Szefler <a href="mailto:mbs@fivesight.com">mbs</a>
  */
-@ChannelType
-public interface NaturalNumberStream {
-  public void val(int n, SynchChannel ret);
+public interface NaturalNumberStream extends ChannelType {
+
+	public void val(int n, SynchChannel ret);
+
 }
diff --git a/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrint.java b/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrint.java
index 3e32e79..a4b6cfe 100644
--- a/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrint.java
+++ b/src/test/java/org/apache/ode/jacob/examples/synch/SynchPrint.java
@@ -18,8 +18,8 @@
  */
 package org.apache.ode.jacob.examples.synch;
 
+import org.apache.ode.jacob.ChannelType;
 import org.apache.ode.jacob.SynchChannel;
-import org.apache.ode.jacob.ap.ChannelType;
 
 /**
  * DOCUMENTME.
@@ -27,7 +27,8 @@
  *
  * @author Maciej Szefler <a href="mailto:mbs@fivesight.com">mbs</a>
  */
-@ChannelType
-public interface SynchPrint {
-  public SynchChannel print(String msg);
+public interface SynchPrint extends ChannelType {
+
+	public SynchChannel print(String msg);
+
 }
