diff --git a/ax-adt/pom.xml b/ax-adt/pom.xml
index f827e087..0c91b9d8 100644
--- a/ax-adt/pom.xml
+++ b/ax-adt/pom.xml
@@ -20,5 +20,10 @@
ax-analysis
${project.version}
+
+ com.g2forge.alexandria
+ ax-collection
+ ${project.version}
+
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/graph/v2/DiGraphBuilder.java b/ax-adt/src/main/java/com/g2forge/alexandria/adt/graph/v2/DiGraphBuilder.java
index 8f2ab821..008fc77a 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/graph/v2/DiGraphBuilder.java
+++ b/ax-adt/src/main/java/com/g2forge/alexandria/adt/graph/v2/DiGraphBuilder.java
@@ -5,7 +5,6 @@
import java.util.LinkedHashSet;
import java.util.Set;
-import com.g2forge.alexandria.adt.collection.ICollection;
import com.g2forge.alexandria.adt.graph.v2.DiGraph.EdgeData;
import com.g2forge.alexandria.adt.graph.v2.DiGraph.ILockableGraphKey;
import com.g2forge.alexandria.adt.graph.v2.DiGraph.ImmutableGraphKey;
@@ -13,6 +12,7 @@
import com.g2forge.alexandria.adt.graph.v2.member.IMemberDataStrategy;
import com.g2forge.alexandria.annotations.note.Note;
import com.g2forge.alexandria.annotations.note.NoteType;
+import com.g2forge.alexandria.collection.ICollection;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/graph/v2/IGraphModifier.java b/ax-adt/src/main/java/com/g2forge/alexandria/adt/graph/v2/IGraphModifier.java
index b1733d92..31f7953f 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/graph/v2/IGraphModifier.java
+++ b/ax-adt/src/main/java/com/g2forge/alexandria/adt/graph/v2/IGraphModifier.java
@@ -1,7 +1,7 @@
package com.g2forge.alexandria.adt.graph.v2;
-import com.g2forge.alexandria.adt.collection.CollectionCollection;
-import com.g2forge.alexandria.adt.collection.ICollection;
+import com.g2forge.alexandria.collection.CollectionCollection;
+import com.g2forge.alexandria.collection.ICollection;
import com.g2forge.alexandria.java.function.builder.IModifier;
public interface IGraphModifier extends IGraphGeneric {
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/graph/v2/MutableDiGraph.java b/ax-adt/src/main/java/com/g2forge/alexandria/adt/graph/v2/MutableDiGraph.java
index 027b0329..04682747 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/graph/v2/MutableDiGraph.java
+++ b/ax-adt/src/main/java/com/g2forge/alexandria/adt/graph/v2/MutableDiGraph.java
@@ -2,7 +2,7 @@
import java.util.LinkedHashSet;
-import com.g2forge.alexandria.adt.collection.ICollection;
+import com.g2forge.alexandria.collection.ICollection;
import lombok.AccessLevel;
import lombok.Getter;
diff --git a/ax-collection/.gitignore b/ax-collection/.gitignore
new file mode 100644
index 00000000..99b82028
--- /dev/null
+++ b/ax-collection/.gitignore
@@ -0,0 +1,5 @@
+/.settings/
+/target/
+/.classpath
+/.project
+*.factorypath
diff --git a/ax-collection/pom.xml b/ax-collection/pom.xml
new file mode 100644
index 00000000..5d18a18f
--- /dev/null
+++ b/ax-collection/pom.xml
@@ -0,0 +1,18 @@
+
+
+
+ 4.0.0
+ ax-collection
+
+
+ com.g2forge.alexandria
+ ax-project
+ 0.0.19-SNAPSHOT
+ ../ax-project/pom.xml
+
+
+ Alexandria Collections
+ Extended Collections API.
+
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/CircularBuffer.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/CircularBuffer.java
similarity index 94%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/CircularBuffer.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/CircularBuffer.java
index 7126e21a..7b538353 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/CircularBuffer.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/CircularBuffer.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection;
+package com.g2forge.alexandria.collection;
import java.util.ArrayList;
import java.util.List;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/CollectionCollection.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/CollectionCollection.java
similarity index 94%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/CollectionCollection.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/CollectionCollection.java
index bfb6dd71..7b1ccb1d 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/CollectionCollection.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/CollectionCollection.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection;
+package com.g2forge.alexandria.collection;
import java.util.Collection;
import java.util.Collections;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/DCollectionCollection.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/DCollectionCollection.java
similarity index 92%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/DCollectionCollection.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/DCollectionCollection.java
index 83676335..f4e9f94e 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/DCollectionCollection.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/DCollectionCollection.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection;
+package com.g2forge.alexandria.collection;
import java.util.Iterator;
import java.util.stream.Stream;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/DIteratorCollection.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/DIteratorCollection.java
similarity index 92%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/DIteratorCollection.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/DIteratorCollection.java
index 5aa8f373..fe5541a4 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/DIteratorCollection.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/DIteratorCollection.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection;
+package com.g2forge.alexandria.collection;
import java.util.Collection;
import java.util.stream.Collectors;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/DStreamCollection.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/DStreamCollection.java
similarity index 92%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/DStreamCollection.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/DStreamCollection.java
index 29b26432..8789ae63 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/DStreamCollection.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/DStreamCollection.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection;
+package com.g2forge.alexandria.collection;
import java.util.Collection;
import java.util.Iterator;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/EmptyCollection.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/EmptyCollection.java
similarity index 94%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/EmptyCollection.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/EmptyCollection.java
index b13c260f..b4e4c821 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/EmptyCollection.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/EmptyCollection.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection;
+package com.g2forge.alexandria.collection;
import java.util.Collection;
import java.util.Collections;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/ICloseableCollection.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/ICloseableCollection.java
similarity index 88%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/ICloseableCollection.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/ICloseableCollection.java
index 43545bfb..5950b641 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/ICloseableCollection.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/ICloseableCollection.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection;
+package com.g2forge.alexandria.collection;
import com.g2forge.alexandria.java.close.ICloseable;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/ICollection.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/ICollection.java
similarity index 92%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/ICollection.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/ICollection.java
index 89cad870..9f34acd7 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/ICollection.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/ICollection.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection;
+package com.g2forge.alexandria.collection;
import java.util.Collection;
import java.util.stream.Stream;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/IndexedGeneratorList.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/IndexedGeneratorList.java
similarity index 90%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/IndexedGeneratorList.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/IndexedGeneratorList.java
index 44fe20c3..6cb7404f 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/IndexedGeneratorList.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/IndexedGeneratorList.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection;
+package com.g2forge.alexandria.collection;
import java.util.AbstractList;
import java.util.function.IntFunction;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/IntegerRangeList.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/IntegerRangeList.java
similarity index 87%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/IntegerRangeList.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/IntegerRangeList.java
index fe25141b..184508c4 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/IntegerRangeList.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/IntegerRangeList.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection;
+package com.g2forge.alexandria.collection;
import java.util.AbstractList;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/LongRangeList.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/LongRangeList.java
similarity index 87%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/LongRangeList.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/LongRangeList.java
index d73f4afb..53a4aa5b 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/LongRangeList.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/LongRangeList.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection;
+package com.g2forge.alexandria.collection;
import java.util.AbstractList;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/SingleCollection.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/SingleCollection.java
similarity index 93%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/SingleCollection.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/SingleCollection.java
index 0c76e39e..106f1b80 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/SingleCollection.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/SingleCollection.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection;
+package com.g2forge.alexandria.collection;
import java.util.Collection;
import java.util.Collections;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/ICollectionBuilder.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/ICollectionBuilder.java
similarity index 89%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/ICollectionBuilder.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/ICollectionBuilder.java
index 766c6efa..138510ad 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/ICollectionBuilder.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/ICollectionBuilder.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection.collector;
+package com.g2forge.alexandria.collection.collector;
import com.g2forge.alexandria.java.function.ISupplier;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/ICollector.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/ICollector.java
similarity index 85%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/ICollector.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/ICollector.java
index e725bb07..6175b216 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/ICollector.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/ICollector.java
@@ -1,4 +1,4 @@
-package com.g2forge.alexandria.adt.collection.collector;
+package com.g2forge.alexandria.collection.collector;
public interface ICollector {
public default ICollector add(Iterable extends T> values) {
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/CollectionCollectionBuilder.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/CollectionCollectionBuilder.java
similarity index 84%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/CollectionCollectionBuilder.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/CollectionCollectionBuilder.java
index 26e48cc9..b3a61e33 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/CollectionCollectionBuilder.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/CollectionCollectionBuilder.java
@@ -1,10 +1,10 @@
-package com.g2forge.alexandria.adt.collection.collector.implementations;
+package com.g2forge.alexandria.collection.collector.implementations;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import com.g2forge.alexandria.adt.collection.collector.ICollectionBuilder;
+import com.g2forge.alexandria.collection.collector.ICollectionBuilder;
import lombok.RequiredArgsConstructor;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/CollectorSetter.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/CollectorSetter.java
similarity index 77%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/CollectorSetter.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/CollectorSetter.java
index d5ca5cf6..e2892101 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/CollectorSetter.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/CollectorSetter.java
@@ -1,6 +1,6 @@
-package com.g2forge.alexandria.adt.collection.collector.implementations;
+package com.g2forge.alexandria.collection.collector.implementations;
-import com.g2forge.alexandria.adt.collection.collector.ICollector;
+import com.g2forge.alexandria.collection.collector.ICollector;
import com.g2forge.alexandria.java.adt.tuple.ITuple1_S;
public class CollectorSetter implements ITuple1_S {
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/FixedCollectionBuilder.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/FixedCollectionBuilder.java
similarity index 82%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/FixedCollectionBuilder.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/FixedCollectionBuilder.java
index 773989c0..cdec657c 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/FixedCollectionBuilder.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/FixedCollectionBuilder.java
@@ -1,8 +1,8 @@
-package com.g2forge.alexandria.adt.collection.collector.implementations;
+package com.g2forge.alexandria.collection.collector.implementations;
import java.util.Collection;
-import com.g2forge.alexandria.adt.collection.collector.ICollectionBuilder;
+import com.g2forge.alexandria.collection.collector.ICollectionBuilder;
import lombok.RequiredArgsConstructor;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/SeparatingCollector.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/SeparatingCollector.java
similarity index 84%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/SeparatingCollector.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/SeparatingCollector.java
index e321059b..d8e749b8 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/SeparatingCollector.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/SeparatingCollector.java
@@ -1,6 +1,6 @@
-package com.g2forge.alexandria.adt.collection.collector.implementations;
+package com.g2forge.alexandria.collection.collector.implementations;
-import com.g2forge.alexandria.adt.collection.collector.ICollector;
+import com.g2forge.alexandria.collection.collector.ICollector;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/StringCollector.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/StringCollector.java
similarity index 71%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/StringCollector.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/StringCollector.java
index 53cb97c6..55572916 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/collector/implementations/StringCollector.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/collector/implementations/StringCollector.java
@@ -1,8 +1,8 @@
-package com.g2forge.alexandria.adt.collection.collector.implementations;
+package com.g2forge.alexandria.collection.collector.implementations;
import java.util.Objects;
-import com.g2forge.alexandria.adt.collection.collector.ICollector;
+import com.g2forge.alexandria.collection.collector.ICollector;
public class StringCollector implements ICollector {
protected final StringBuilder internal = new StringBuilder();
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/strategy/ACollectionStrategy.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/strategy/ACollectionStrategy.java
similarity index 71%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/strategy/ACollectionStrategy.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/strategy/ACollectionStrategy.java
index 73d10bb8..b07822d8 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/strategy/ACollectionStrategy.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/strategy/ACollectionStrategy.java
@@ -1,9 +1,9 @@
-package com.g2forge.alexandria.adt.collection.strategy;
+package com.g2forge.alexandria.collection.strategy;
import java.util.Collection;
-import com.g2forge.alexandria.adt.collection.collector.ICollectionBuilder;
-import com.g2forge.alexandria.adt.collection.collector.implementations.CollectionCollectionBuilder;
+import com.g2forge.alexandria.collection.collector.ICollectionBuilder;
+import com.g2forge.alexandria.collection.collector.implementations.CollectionCollectionBuilder;
public abstract class ACollectionStrategy, T> implements ICollectionStrategy {
protected class Builder extends CollectionCollectionBuilder {
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/strategy/ICollectionStrategy.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/strategy/ICollectionStrategy.java
similarity index 51%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/strategy/ICollectionStrategy.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/strategy/ICollectionStrategy.java
index 4af5188e..691c3a26 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/strategy/ICollectionStrategy.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/strategy/ICollectionStrategy.java
@@ -1,6 +1,6 @@
-package com.g2forge.alexandria.adt.collection.strategy;
+package com.g2forge.alexandria.collection.strategy;
-import com.g2forge.alexandria.adt.collection.collector.ICollectionBuilder;
+import com.g2forge.alexandria.collection.collector.ICollectionBuilder;
public interface ICollectionStrategy {
public ICollectionBuilder builder();
diff --git a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/strategy/implementations/CollectionStrategy.java b/ax-collection/src/main/java/com/g2forge/alexandria/collection/strategy/implementations/CollectionStrategy.java
similarity index 65%
rename from ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/strategy/implementations/CollectionStrategy.java
rename to ax-collection/src/main/java/com/g2forge/alexandria/collection/strategy/implementations/CollectionStrategy.java
index 7c57797e..04579dc5 100644
--- a/ax-adt/src/main/java/com/g2forge/alexandria/adt/collection/strategy/implementations/CollectionStrategy.java
+++ b/ax-collection/src/main/java/com/g2forge/alexandria/collection/strategy/implementations/CollectionStrategy.java
@@ -1,9 +1,9 @@
-package com.g2forge.alexandria.adt.collection.strategy.implementations;
+package com.g2forge.alexandria.collection.strategy.implementations;
import java.util.ArrayList;
import java.util.Collection;
-import com.g2forge.alexandria.adt.collection.strategy.ACollectionStrategy;
+import com.g2forge.alexandria.collection.strategy.ACollectionStrategy;
public class CollectionStrategy extends ACollectionStrategy, T> {
protected ArrayList create(Collection copy) {
diff --git a/ax-path/.gitignore b/ax-path/.gitignore
new file mode 100644
index 00000000..99b82028
--- /dev/null
+++ b/ax-path/.gitignore
@@ -0,0 +1,5 @@
+/.settings/
+/target/
+/.classpath
+/.project
+*.factorypath
diff --git a/ax-path/pom.xml b/ax-path/pom.xml
new file mode 100644
index 00000000..2fc339db
--- /dev/null
+++ b/ax-path/pom.xml
@@ -0,0 +1,27 @@
+
+
+
+ 4.0.0
+ ax-path
+
+
+ com.g2forge.alexandria
+ ax-project
+ 0.0.19-SNAPSHOT
+ ../ax-project/pom.xml
+
+
+ Alexandria Paths
+ Generic Path API - flexible enough to be used for loca &
+ remote filesystems or even abstract tree data structures.
+
+
+
+ com.g2forge.alexandria
+ ax-collection
+ ${project.version}
+
+
+
diff --git a/ax-path/src/main/java/com/g2forge/alexandria/path/IPath.java b/ax-path/src/main/java/com/g2forge/alexandria/path/IPath.java
new file mode 100644
index 00000000..178690cb
--- /dev/null
+++ b/ax-path/src/main/java/com/g2forge/alexandria/path/IPath.java
@@ -0,0 +1,11 @@
+package com.g2forge.alexandria.path;
+
+import com.g2forge.alexandria.collection.ICollection;
+
+public interface IPath {
+ public ICollection getComponents();
+
+ public IPath resolve(IPath subpath);
+
+ public boolean isEmpty();
+}
diff --git a/ax-path/src/main/java/com/g2forge/alexandria/path/Path.java b/ax-path/src/main/java/com/g2forge/alexandria/path/Path.java
new file mode 100644
index 00000000..1ed255f0
--- /dev/null
+++ b/ax-path/src/main/java/com/g2forge/alexandria/path/Path.java
@@ -0,0 +1,47 @@
+package com.g2forge.alexandria.path;
+
+import java.util.Collection;
+
+import com.g2forge.alexandria.collection.CollectionCollection;
+import com.g2forge.alexandria.collection.EmptyCollection;
+import com.g2forge.alexandria.collection.ICollection;
+import com.g2forge.alexandria.java.core.helpers.HCollection;
+
+import lombok.Builder;
+import lombok.Data;
+import lombok.RequiredArgsConstructor;
+
+@Data
+@Builder(toBuilder = true)
+@RequiredArgsConstructor
+public class Path implements IPath {
+ protected static final Path