diff --git a/src/main/java/com/syncleus/dann/annotation/Immutable.java b/src/main/java/com/syncleus/dann/annotation/Immutable.java
index 38abb97f33d9111ab0e396fc7fa661dec1bb3850..4c2f60b042ef62ccaa52192355dcdc016d8c255c 100644
--- a/src/main/java/com/syncleus/dann/annotation/Immutable.java
+++ b/src/main/java/com/syncleus/dann/annotation/Immutable.java
@@ -1,3 +1,21 @@
+/******************************************************************************
+ *                                                                             *
+ *  Copyright: (c) Syncleus, Inc.                                              *
+ *                                                                             *
+ *  You may redistribute and modify this source code under the terms and       *
+ *  conditions of the Open Source Community License - Type C version 1.0       *
+ *  or any later version as published by Syncleus, Inc. at www.syncleus.com.   *
+ *  There should be a copy of the license included with this file. If a copy   *
+ *  of the license is not included you are granted no right to distribute or   *
+ *  otherwise use this file except through a legal and valid license. You      *
+ *  should also contact Syncleus, Inc. at the information below if you cannot  *
+ *  find a license:                                                            *
+ *                                                                             *
+ *  Syncleus, Inc.                                                             *
+ *  2604 South 12th Street                                                     *
+ *  Philadelphia, PA 19148                                                     *
+ *                                                                             *
+ ******************************************************************************/
 package com.syncleus.dann.annotation;
 
 import java.lang.annotation.*;
diff --git a/src/main/java/com/syncleus/dann/annotation/processing/Requires.java b/src/main/java/com/syncleus/dann/annotation/processing/Requires.java
index 4fd180c66e4295537e29f0d8b7c5a42659c8a10a..c9c2e2a0a0a0d53c63d940fcbdf4f1a7462f818e 100644
--- a/src/main/java/com/syncleus/dann/annotation/processing/Requires.java
+++ b/src/main/java/com/syncleus/dann/annotation/processing/Requires.java
@@ -1,3 +1,21 @@
+/******************************************************************************
+ *                                                                             *
+ *  Copyright: (c) Syncleus, Inc.                                              *
+ *                                                                             *
+ *  You may redistribute and modify this source code under the terms and       *
+ *  conditions of the Open Source Community License - Type C version 1.0       *
+ *  or any later version as published by Syncleus, Inc. at www.syncleus.com.   *
+ *  There should be a copy of the license included with this file. If a copy   *
+ *  of the license is not included you are granted no right to distribute or   *
+ *  otherwise use this file except through a legal and valid license. You      *
+ *  should also contact Syncleus, Inc. at the information below if you cannot  *
+ *  find a license:                                                            *
+ *                                                                             *
+ *  Syncleus, Inc.                                                             *
+ *  2604 South 12th Street                                                     *
+ *  Philadelphia, PA 19148                                                     *
+ *                                                                             *
+ ******************************************************************************/
 package com.syncleus.dann.annotation.processing;
 
 import java.lang.annotation.*;
diff --git a/src/main/java/com/syncleus/dann/annotation/processing/RequiresImmutable.java b/src/main/java/com/syncleus/dann/annotation/processing/RequiresImmutable.java
index 64a0f23513060fb0c8aa9b34b1caa1b2c90224d0..1ba010a07cce6a82266a819a6ed51175af5ff207 100644
--- a/src/main/java/com/syncleus/dann/annotation/processing/RequiresImmutable.java
+++ b/src/main/java/com/syncleus/dann/annotation/processing/RequiresImmutable.java
@@ -1,3 +1,21 @@
+/******************************************************************************
+ *                                                                             *
+ *  Copyright: (c) Syncleus, Inc.                                              *
+ *                                                                             *
+ *  You may redistribute and modify this source code under the terms and       *
+ *  conditions of the Open Source Community License - Type C version 1.0       *
+ *  or any later version as published by Syncleus, Inc. at www.syncleus.com.   *
+ *  There should be a copy of the license included with this file. If a copy   *
+ *  of the license is not included you are granted no right to distribute or   *
+ *  otherwise use this file except through a legal and valid license. You      *
+ *  should also contact Syncleus, Inc. at the information below if you cannot  *
+ *  find a license:                                                            *
+ *                                                                             *
+ *  Syncleus, Inc.                                                             *
+ *  2604 South 12th Street                                                     *
+ *  Philadelphia, PA 19148                                                     *
+ *                                                                             *
+ ******************************************************************************/
 package com.syncleus.dann.annotation.processing;
 
 import com.syncleus.dann.annotation.Immutable;
diff --git a/src/main/java/com/syncleus/dann/graph/BidirectedCloud.java b/src/main/java/com/syncleus/dann/graph/BidirectedCloud.java
new file mode 100644
index 0000000000000000000000000000000000000000..046c51e13070ffe3c156fb4d234fd758aed7ff0d
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/BidirectedCloud.java
@@ -0,0 +1,28 @@
+/******************************************************************************
+ * Copyright: (c) Syncleus, Inc.                                              *
+ *                                                                            *
+ * You may redistribute and modify this source code under the terms and       *
+ * conditions of the Open Source Community License - Type C version 1.0       *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com.   *
+ * There should be a copy of the license included with this file. If a copy   *
+ * of the license is not included you are granted no right to distribute or   *
+ * otherwise use this file except through a legal and valid license. You      *
+ * should also contact Syncleus, Inc. at the information below if you cannot  *
+ * find a license:                                                            *
+ *                                                                            *
+ * Syncleus, Inc.                                                             *
+ * 2604 South 12th Street                                                     *
+ * Philadelphia, PA 19148                                                     *
+ ******************************************************************************/
+
+package com.syncleus.dann.graph;
+
+public interface BidirectedCloud<
+	  	T,
+	  	EP extends BidirectedCloud.Endpoint<? extends T>
+	  > extends TraversableCloud<T,EP>
+{
+	interface Endpoint<T> extends TraversableCloud.Endpoint<T>
+	{
+	}
+}
diff --git a/src/main/java/com/syncleus/dann/graph/Cloud.java b/src/main/java/com/syncleus/dann/graph/Cloud.java
index 053fb050f4fdeb199d1c7c2c13f4c41dee28f512..cd796f6c2387dd445b94b0d3a7f526cf6bc2ed88 100644
--- a/src/main/java/com/syncleus/dann/graph/Cloud.java
+++ b/src/main/java/com/syncleus/dann/graph/Cloud.java
@@ -33,10 +33,6 @@ public interface Cloud<
 	interface Endpoint<T>
 	{
 		Set<? extends Cloud.Endpoint<? extends T>> getNeighbors();
-		Set<? extends Cloud.Endpoint<? extends T>> getTraversableNeighborsTo();
-		Set<? extends Cloud.Endpoint<? extends T>> getTraversableNeighborsFrom();
-		boolean isTraversable();
-		boolean isTraversable(Cloud.Endpoint<?> destination);
 		T getTarget();
 	};
 
@@ -44,14 +40,11 @@ public interface Cloud<
 	Set<EP> getEndpoints(Object target);
 	Set<T> getTargets();
 	Set<T> getNeighbors(Object target);
-	Set<T> getTraversableFrom(Object target);
-	Set<T> getTraversableTo(Object target);
-	boolean isTraversable(Object sourceTarget, Object destinationTarget);
-	int getDegree();
 	boolean contains( Object endpoint);
 	boolean containsAny(Collection<? extends Endpoint<?>> endpoint);
 	boolean containsAll(Collection<? extends Endpoint<?>> endpoint);
 	boolean containsTarget(Object target);
 	boolean containsAnyTargets(Collection<?> target);
 	boolean containsAllTargets(Collection<?> target);
+	int getDegree();
 }
diff --git a/src/main/java/com/syncleus/dann/graph/DynamicCloud.java b/src/main/java/com/syncleus/dann/graph/DynamicCloud.java
new file mode 100644
index 0000000000000000000000000000000000000000..02c643217b2c216189b5259c403824f2127ab2e9
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/DynamicCloud.java
@@ -0,0 +1,28 @@
+/******************************************************************************
+ * Copyright: (c) Syncleus, Inc.                                              *
+ *                                                                            *
+ * You may redistribute and modify this source code under the terms and       *
+ * conditions of the Open Source Community License - Type C version 1.0       *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com.   *
+ * There should be a copy of the license included with this file. If a copy   *
+ * of the license is not included you are granted no right to distribute or   *
+ * otherwise use this file except through a legal and valid license. You      *
+ * should also contact Syncleus, Inc. at the information below if you cannot  *
+ * find a license:                                                            *
+ *                                                                            *
+ * Syncleus, Inc.                                                             *
+ * 2604 South 12th Street                                                     *
+ * Philadelphia, PA 19148                                                     *
+ ******************************************************************************/
+
+package com.syncleus.dann.graph;
+
+public interface DynamicCloud<
+	  	T,
+	  	EP extends DynamicCloud.Endpoint<? extends T>
+	  > extends MutableCloud<T,EP>, TraversableCloud<T,EP>
+{
+	interface Endpoint<T> extends MutableCloud.Endpoint<T>, TraversableCloud.Endpoint<T>
+	{
+	}
+}
diff --git a/src/main/java/com/syncleus/dann/graph/TraversableCloud.java b/src/main/java/com/syncleus/dann/graph/TraversableCloud.java
new file mode 100644
index 0000000000000000000000000000000000000000..67d1319ee9ce4ce9f46fcd11b15a7d97737b17c8
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/TraversableCloud.java
@@ -0,0 +1,38 @@
+/******************************************************************************
+ *                                                                             *
+ *  Copyright: (c) Syncleus, Inc.                                              *
+ *                                                                             *
+ *  You may redistribute and modify this source code under the terms and       *
+ *  conditions of the Open Source Community License - Type C version 1.0       *
+ *  or any later version as published by Syncleus, Inc. at www.syncleus.com.   *
+ *  There should be a copy of the license included with this file. If a copy   *
+ *  of the license is not included you are granted no right to distribute or   *
+ *  otherwise use this file except through a legal and valid license. You      *
+ *  should also contact Syncleus, Inc. at the information below if you cannot  *
+ *  find a license:                                                            *
+ *                                                                             *
+ *  Syncleus, Inc.                                                             *
+ *  2604 South 12th Street                                                     *
+ *  Philadelphia, PA 19148                                                     *
+ *                                                                             *
+ ******************************************************************************/
+package com.syncleus.dann.graph;
+
+import java.util.Set;
+
+public interface TraversableCloud<
+	  	T,
+	  	EP extends TraversableCloud.Endpoint<? extends T>
+	  > extends Cloud<T,EP>
+{
+	interface Endpoint<T> extends Cloud.Endpoint<T>
+	{
+		Set<? extends Cloud.Endpoint<? extends T>> getTraversableNeighborsTo();
+		Set<? extends Cloud.Endpoint<? extends T>> getTraversableNeighborsFrom();
+		boolean isTraversable(Cloud.Endpoint<?> destination);
+	}
+
+	Set<T> getTraversableFrom(Object target);
+	Set<T> getTraversableTo(Object target);
+	boolean isTraversable(Object sourceTarget, Object destinationTarget);
+}
diff --git a/src/main/java/com/syncleus/dann/graph/annotation/FixedEndpoints.java b/src/main/java/com/syncleus/dann/graph/annotation/FixedEndpoints.java
index e3b3bae4e2bf9cc36dbd9a9b7fb77022ada335d3..08d4d1a6ecc22749a2cffd37bc508a31a5b98edf 100644
--- a/src/main/java/com/syncleus/dann/graph/annotation/FixedEndpoints.java
+++ b/src/main/java/com/syncleus/dann/graph/annotation/FixedEndpoints.java
@@ -1,3 +1,21 @@
+/******************************************************************************
+ *                                                                             *
+ *  Copyright: (c) Syncleus, Inc.                                              *
+ *                                                                             *
+ *  You may redistribute and modify this source code under the terms and       *
+ *  conditions of the Open Source Community License - Type C version 1.0       *
+ *  or any later version as published by Syncleus, Inc. at www.syncleus.com.   *
+ *  There should be a copy of the license included with this file. If a copy   *
+ *  of the license is not included you are granted no right to distribute or   *
+ *  otherwise use this file except through a legal and valid license. You      *
+ *  should also contact Syncleus, Inc. at the information below if you cannot  *
+ *  find a license:                                                            *
+ *                                                                             *
+ *  Syncleus, Inc.                                                             *
+ *  2604 South 12th Street                                                     *
+ *  Philadelphia, PA 19148                                                     *
+ *                                                                             *
+ ******************************************************************************/
 package com.syncleus.dann.graph.annotation;
 
 import java.lang.annotation.*;
diff --git a/src/main/java/com/syncleus/dann/graph/annotation/processing/RequiresUndirected.java b/src/main/java/com/syncleus/dann/graph/annotation/processing/RequiresUndirected.java
index 85e6844fb307fd714b05f31e9b9bc5797c2701e2..ced035fe0b6ce66e5dde93f16f76579963fda399 100644
--- a/src/main/java/com/syncleus/dann/graph/annotation/processing/RequiresUndirected.java
+++ b/src/main/java/com/syncleus/dann/graph/annotation/processing/RequiresUndirected.java
@@ -1,3 +1,21 @@
+/******************************************************************************
+ *                                                                             *
+ *  Copyright: (c) Syncleus, Inc.                                              *
+ *                                                                             *
+ *  You may redistribute and modify this source code under the terms and       *
+ *  conditions of the Open Source Community License - Type C version 1.0       *
+ *  or any later version as published by Syncleus, Inc. at www.syncleus.com.   *
+ *  There should be a copy of the license included with this file. If a copy   *
+ *  of the license is not included you are granted no right to distribute or   *
+ *  otherwise use this file except through a legal and valid license. You      *
+ *  should also contact Syncleus, Inc. at the information below if you cannot  *
+ *  find a license:                                                            *
+ *                                                                             *
+ *  Syncleus, Inc.                                                             *
+ *  2604 South 12th Street                                                     *
+ *  Philadelphia, PA 19148                                                     *
+ *                                                                             *
+ ******************************************************************************/
 package com.syncleus.dann.graph.annotation.processing;
 
 public @interface RequiresUndirected