diff --git a/build.sbt b/build.sbt
index 9a2cb500..ba755de6 100644
--- a/build.sbt
+++ b/build.sbt
@@ -1,6 +1,6 @@
import sbt.Keys._
import Version._
-import com.typesafe.sbt.osgi.SbtOsgi._
+// import com.typesafe.sbt.osgi.SbtOsgi._
lazy val extra = http://scalanlp.org/
@@ -30,8 +30,7 @@ val VersionRegex = "v([0-9]+.[0-9]+.[0-9]+)-?(.*)?".r
lazy val commonSettings = Seq(
organization := "org.scalanlp",
version := "0.4.4",
-
-/*
+ /*
git.baseVersion := "0.4",
// append -SNAPSHOT unless we're on a branch
git.gitUncommittedChanges := false,//git.gitCurrentTags.value.isEmpty,
@@ -45,16 +44,12 @@ lazy val commonSettings = Seq(
}
},
*/
-
scalaVersion := Version.scala,
crossScalaVersions := Seq("2.12.1", "2.11.8"),
libraryDependencies ++= Seq(
Library.breeze,
Library.breezeConfig,
Library.mapdb,
- Library.tikaParsers % "compile,optional",
- Library.boilerpipe,
- Library.nekohtml,
Library.slf4jSimple,
Library.commonsLang3,
Library.jflex,
@@ -64,13 +59,13 @@ lazy val commonSettings = Seq(
),
scalacOptions ++= Seq("-deprecation", "-language:_", "-optimize"),
javaOptions += "-Xmx6g",
- javaOptions += "-Xrunhprof:cpu=samples,depth=12",
+ //javaOptions += "-Xrunhprof:cpu=samples,depth=12",
fork := true,
publishMavenStyle := true,
pomExtra := extra,
- publishTo <<= isSnapshot { (v: Boolean) =>
+ publishTo := {
val nexus = "https://oss.sonatype.org/"
- if (v)
+ if (isSnapshot.value)
Some("snapshots" at nexus + "content/repositories/snapshots")
else
Some("releases" at nexus + "service/local/staging/deploy/maven2")
@@ -90,8 +85,11 @@ lazy val commonSettings = Seq(
case Some((2, scalaMajor)) if scalaMajor >= 11 => Seq("org.scala-lang.modules" %% "scala-xml" % "1.0.6")
case _ => Seq.empty
})
-
- ) ++ sbtjflex.SbtJFlexPlugin.jflexSettings ++ net.virtualvoid.sbt.graph.Plugin.graphSettings ++
+ ) ++ sbtjflex.SbtJFlexPlugin.jflexSettings
+ // ++ net.virtualvoid.sbt.graph.Plugin.graphSettings
+
+ // TODO rewrite in sbt 1.x syntax
+ /* ++
IndexedSeq (
mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
{
@@ -102,15 +100,12 @@ lazy val commonSettings = Seq(
case x => old(x)
}
}
-)
-
-
-
+ )*/
lazy val epicCore = project
- .in(file("."))
+ .in(file("modules/core"))
//.enablePlugins(GitVersioning)
- .settings(commonSettings: _*)
+ .settings(commonSettings)
.settings(
name := "epic"
//,
@@ -118,3 +113,16 @@ lazy val epicCore = project
//OsgiKeys.importPackage := Seq("org.apache.tika.*; resolution:=optional", "*"),
//OsgiKeys.exportPackage := Seq("epic.*")
)
+
+lazy val epicHtml = project
+ .in(file("modules/html"))
+ .dependsOn(epicCore)
+ .settings(
+ commonSettings,
+ name := "epic-html",
+ libraryDependencies ++= Seq(
+ Library.tikaParsers,
+ Library.boilerpipe,
+ Library.nekohtml,
+ )
+ )
diff --git a/src/main/flex/epic/preprocess/TreebankTokenizerImpl.flex b/modules/core/src/main/flex/epic/preprocess/TreebankTokenizerImpl.flex
similarity index 100%
rename from src/main/flex/epic/preprocess/TreebankTokenizerImpl.flex
rename to modules/core/src/main/flex/epic/preprocess/TreebankTokenizerImpl.flex
diff --git a/src/main/java/epic/util/Arrays.scala b/modules/core/src/main/java/epic/util/Arrays.scala
similarity index 100%
rename from src/main/java/epic/util/Arrays.scala
rename to modules/core/src/main/java/epic/util/Arrays.scala
diff --git a/src/main/resources/epic/features/bllip-clusters.gz b/modules/core/src/main/resources/epic/features/bllip-clusters.gz
similarity index 100%
rename from src/main/resources/epic/features/bllip-clusters.gz
rename to modules/core/src/main/resources/epic/features/bllip-clusters.gz
diff --git a/src/main/resources/epic/features/hierarchical-en-clusters.gz b/modules/core/src/main/resources/epic/features/hierarchical-en-clusters.gz
similarity index 100%
rename from src/main/resources/epic/features/hierarchical-en-clusters.gz
rename to modules/core/src/main/resources/epic/features/hierarchical-en-clusters.gz
diff --git a/src/main/resources/epic/parser/substates.full.txt b/modules/core/src/main/resources/epic/parser/substates.full.txt
similarity index 100%
rename from src/main/resources/epic/parser/substates.full.txt
rename to modules/core/src/main/resources/epic/parser/substates.full.txt
diff --git a/src/main/resources/epic/parser/substates.small.txt b/modules/core/src/main/resources/epic/parser/substates.small.txt
similarity index 100%
rename from src/main/resources/epic/parser/substates.small.txt
rename to modules/core/src/main/resources/epic/parser/substates.small.txt
diff --git a/src/main/resources/epic/parser/substates.txt b/modules/core/src/main/resources/epic/parser/substates.txt
similarity index 100%
rename from src/main/resources/epic/parser/substates.txt
rename to modules/core/src/main/resources/epic/parser/substates.txt
diff --git a/src/main/resources/epic/preprocess/abbrs.txt b/modules/core/src/main/resources/epic/preprocess/abbrs.txt
similarity index 100%
rename from src/main/resources/epic/preprocess/abbrs.txt
rename to modules/core/src/main/resources/epic/preprocess/abbrs.txt
diff --git a/src/main/resources/epic/preprocess/en-sent-segmenter.model.ser.gz b/modules/core/src/main/resources/epic/preprocess/en-sent-segmenter.model.ser.gz
similarity index 100%
rename from src/main/resources/epic/preprocess/en-sent-segmenter.model.ser.gz
rename to modules/core/src/main/resources/epic/preprocess/en-sent-segmenter.model.ser.gz
diff --git a/src/main/resources/log4j-test.xml b/modules/core/src/main/resources/log4j-test.xml
similarity index 100%
rename from src/main/resources/log4j-test.xml
rename to modules/core/src/main/resources/log4j-test.xml
diff --git a/src/main/resources/ner/en.lst b/modules/core/src/main/resources/ner/en.lst
similarity index 100%
rename from src/main/resources/ner/en.lst
rename to modules/core/src/main/resources/ner/en.lst
diff --git a/src/main/resources/smallbank/dev b/modules/core/src/main/resources/smallbank/dev
similarity index 100%
rename from src/main/resources/smallbank/dev
rename to modules/core/src/main/resources/smallbank/dev
diff --git a/src/main/resources/smallbank/test b/modules/core/src/main/resources/smallbank/test
similarity index 100%
rename from src/main/resources/smallbank/test
rename to modules/core/src/main/resources/smallbank/test
diff --git a/src/main/resources/smallbank/train b/modules/core/src/main/resources/smallbank/train
similarity index 100%
rename from src/main/resources/smallbank/train
rename to modules/core/src/main/resources/smallbank/train
diff --git a/src/main/scala/epic/constraints/CachedChartConstraintsFactory.scala b/modules/core/src/main/scala/epic/constraints/CachedChartConstraintsFactory.scala
similarity index 100%
rename from src/main/scala/epic/constraints/CachedChartConstraintsFactory.scala
rename to modules/core/src/main/scala/epic/constraints/CachedChartConstraintsFactory.scala
diff --git a/src/main/scala/epic/constraints/CachedLabeledSpanConstraintsFactory.scala b/modules/core/src/main/scala/epic/constraints/CachedLabeledSpanConstraintsFactory.scala
similarity index 100%
rename from src/main/scala/epic/constraints/CachedLabeledSpanConstraintsFactory.scala
rename to modules/core/src/main/scala/epic/constraints/CachedLabeledSpanConstraintsFactory.scala
diff --git a/src/main/scala/epic/constraints/CachedSpanConstraintsFactory.scala b/modules/core/src/main/scala/epic/constraints/CachedSpanConstraintsFactory.scala
similarity index 100%
rename from src/main/scala/epic/constraints/CachedSpanConstraintsFactory.scala
rename to modules/core/src/main/scala/epic/constraints/CachedSpanConstraintsFactory.scala
diff --git a/src/main/scala/epic/constraints/ChartConstraints.scala b/modules/core/src/main/scala/epic/constraints/ChartConstraints.scala
similarity index 100%
rename from src/main/scala/epic/constraints/ChartConstraints.scala
rename to modules/core/src/main/scala/epic/constraints/ChartConstraints.scala
diff --git a/src/main/scala/epic/constraints/LabeledSpanConstraints.scala b/modules/core/src/main/scala/epic/constraints/LabeledSpanConstraints.scala
similarity index 100%
rename from src/main/scala/epic/constraints/LabeledSpanConstraints.scala
rename to modules/core/src/main/scala/epic/constraints/LabeledSpanConstraints.scala
diff --git a/src/main/scala/epic/constraints/LongSpanConstraints.scala b/modules/core/src/main/scala/epic/constraints/LongSpanConstraints.scala
similarity index 100%
rename from src/main/scala/epic/constraints/LongSpanConstraints.scala
rename to modules/core/src/main/scala/epic/constraints/LongSpanConstraints.scala
diff --git a/src/main/scala/epic/constraints/SpanConstraints.scala b/modules/core/src/main/scala/epic/constraints/SpanConstraints.scala
similarity index 100%
rename from src/main/scala/epic/constraints/SpanConstraints.scala
rename to modules/core/src/main/scala/epic/constraints/SpanConstraints.scala
diff --git a/src/main/scala/epic/constraints/TagConstraints.scala b/modules/core/src/main/scala/epic/constraints/TagConstraints.scala
similarity index 100%
rename from src/main/scala/epic/constraints/TagConstraints.scala
rename to modules/core/src/main/scala/epic/constraints/TagConstraints.scala
diff --git a/src/main/scala/epic/corpora/CONLLSequenceReader.scala b/modules/core/src/main/scala/epic/corpora/CONLLSequenceReader.scala
similarity index 100%
rename from src/main/scala/epic/corpora/CONLLSequenceReader.scala
rename to modules/core/src/main/scala/epic/corpora/CONLLSequenceReader.scala
diff --git a/src/main/scala/epic/corpora/MascUtil.scala b/modules/core/src/main/scala/epic/corpora/MascUtil.scala
similarity index 100%
rename from src/main/scala/epic/corpora/MascUtil.scala
rename to modules/core/src/main/scala/epic/corpora/MascUtil.scala
diff --git a/src/main/scala/epic/dense/AdadeltaGradientDescentDVD.scala b/modules/core/src/main/scala/epic/dense/AdadeltaGradientDescentDVD.scala
similarity index 100%
rename from src/main/scala/epic/dense/AdadeltaGradientDescentDVD.scala
rename to modules/core/src/main/scala/epic/dense/AdadeltaGradientDescentDVD.scala
diff --git a/src/main/scala/epic/dense/AffineOutputTransform.scala b/modules/core/src/main/scala/epic/dense/AffineOutputTransform.scala
similarity index 100%
rename from src/main/scala/epic/dense/AffineOutputTransform.scala
rename to modules/core/src/main/scala/epic/dense/AffineOutputTransform.scala
diff --git a/src/main/scala/epic/dense/AffineTransform.scala b/modules/core/src/main/scala/epic/dense/AffineTransform.scala
similarity index 100%
rename from src/main/scala/epic/dense/AffineTransform.scala
rename to modules/core/src/main/scala/epic/dense/AffineTransform.scala
diff --git a/src/main/scala/epic/dense/BatchNormalizationTransform.scala b/modules/core/src/main/scala/epic/dense/BatchNormalizationTransform.scala
similarity index 100%
rename from src/main/scala/epic/dense/BatchNormalizationTransform.scala
rename to modules/core/src/main/scala/epic/dense/BatchNormalizationTransform.scala
diff --git a/src/main/scala/epic/dense/CachingLookupAndAffineTransformDense.scala b/modules/core/src/main/scala/epic/dense/CachingLookupAndAffineTransformDense.scala
similarity index 100%
rename from src/main/scala/epic/dense/CachingLookupAndAffineTransformDense.scala
rename to modules/core/src/main/scala/epic/dense/CachingLookupAndAffineTransformDense.scala
diff --git a/src/main/scala/epic/dense/CachingLookupTransform.scala b/modules/core/src/main/scala/epic/dense/CachingLookupTransform.scala
similarity index 100%
rename from src/main/scala/epic/dense/CachingLookupTransform.scala
rename to modules/core/src/main/scala/epic/dense/CachingLookupTransform.scala
diff --git a/src/main/scala/epic/dense/EmbeddingsTransform.scala b/modules/core/src/main/scala/epic/dense/EmbeddingsTransform.scala
similarity index 100%
rename from src/main/scala/epic/dense/EmbeddingsTransform.scala
rename to modules/core/src/main/scala/epic/dense/EmbeddingsTransform.scala
diff --git a/src/main/scala/epic/dense/IdentityTransform.scala b/modules/core/src/main/scala/epic/dense/IdentityTransform.scala
similarity index 100%
rename from src/main/scala/epic/dense/IdentityTransform.scala
rename to modules/core/src/main/scala/epic/dense/IdentityTransform.scala
diff --git a/src/main/scala/epic/dense/LowRankQuadraticTransform.scala b/modules/core/src/main/scala/epic/dense/LowRankQuadraticTransform.scala
similarity index 100%
rename from src/main/scala/epic/dense/LowRankQuadraticTransform.scala
rename to modules/core/src/main/scala/epic/dense/LowRankQuadraticTransform.scala
diff --git a/src/main/scala/epic/dense/NonlinearTransform.scala b/modules/core/src/main/scala/epic/dense/NonlinearTransform.scala
similarity index 100%
rename from src/main/scala/epic/dense/NonlinearTransform.scala
rename to modules/core/src/main/scala/epic/dense/NonlinearTransform.scala
diff --git a/src/main/scala/epic/dense/OutputEmbeddingTransform.scala b/modules/core/src/main/scala/epic/dense/OutputEmbeddingTransform.scala
similarity index 100%
rename from src/main/scala/epic/dense/OutputEmbeddingTransform.scala
rename to modules/core/src/main/scala/epic/dense/OutputEmbeddingTransform.scala
diff --git a/src/main/scala/epic/dense/OutputTransform.scala b/modules/core/src/main/scala/epic/dense/OutputTransform.scala
similarity index 100%
rename from src/main/scala/epic/dense/OutputTransform.scala
rename to modules/core/src/main/scala/epic/dense/OutputTransform.scala
diff --git a/src/main/scala/epic/dense/TanhTransform.scala b/modules/core/src/main/scala/epic/dense/TanhTransform.scala
similarity index 100%
rename from src/main/scala/epic/dense/TanhTransform.scala
rename to modules/core/src/main/scala/epic/dense/TanhTransform.scala
diff --git a/src/main/scala/epic/dense/Transform.scala b/modules/core/src/main/scala/epic/dense/Transform.scala
similarity index 100%
rename from src/main/scala/epic/dense/Transform.scala
rename to modules/core/src/main/scala/epic/dense/Transform.scala
diff --git a/src/main/scala/epic/dense/Word2Vec.scala b/modules/core/src/main/scala/epic/dense/Word2Vec.scala
similarity index 100%
rename from src/main/scala/epic/dense/Word2Vec.scala
rename to modules/core/src/main/scala/epic/dense/Word2Vec.scala
diff --git a/src/main/scala/epic/dense/Word2VecSurfaceFeaturizer.scala b/modules/core/src/main/scala/epic/dense/Word2VecSurfaceFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/dense/Word2VecSurfaceFeaturizer.scala
rename to modules/core/src/main/scala/epic/dense/Word2VecSurfaceFeaturizer.scala
diff --git a/src/main/scala/epic/dense/Word2VecUtils.java b/modules/core/src/main/scala/epic/dense/Word2VecUtils.java
similarity index 100%
rename from src/main/scala/epic/dense/Word2VecUtils.java
rename to modules/core/src/main/scala/epic/dense/Word2VecUtils.java
diff --git a/src/main/scala/epic/features/BilexicalFeaturizer.scala b/modules/core/src/main/scala/epic/features/BilexicalFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/BilexicalFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/BilexicalFeaturizer.scala
diff --git a/src/main/scala/epic/features/BrownClusters.scala b/modules/core/src/main/scala/epic/features/BrownClusters.scala
similarity index 100%
rename from src/main/scala/epic/features/BrownClusters.scala
rename to modules/core/src/main/scala/epic/features/BrownClusters.scala
diff --git a/src/main/scala/epic/features/ContextFeaturizer.scala b/modules/core/src/main/scala/epic/features/ContextFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/ContextFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/ContextFeaturizer.scala
diff --git a/src/main/scala/epic/features/ContextSurfaceFeaturizer.scala b/modules/core/src/main/scala/epic/features/ContextSurfaceFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/ContextSurfaceFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/ContextSurfaceFeaturizer.scala
diff --git a/src/main/scala/epic/features/ContextWordFeaturizer.scala b/modules/core/src/main/scala/epic/features/ContextWordFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/ContextWordFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/ContextWordFeaturizer.scala
diff --git a/src/main/scala/epic/features/CrossProductIndex.scala b/modules/core/src/main/scala/epic/features/CrossProductIndex.scala
similarity index 100%
rename from src/main/scala/epic/features/CrossProductIndex.scala
rename to modules/core/src/main/scala/epic/features/CrossProductIndex.scala
diff --git a/src/main/scala/epic/features/DistanceBinner.scala b/modules/core/src/main/scala/epic/features/DistanceBinner.scala
similarity index 100%
rename from src/main/scala/epic/features/DistanceBinner.scala
rename to modules/core/src/main/scala/epic/features/DistanceBinner.scala
diff --git a/src/main/scala/epic/features/EnglishWordClassGenerator.scala b/modules/core/src/main/scala/epic/features/EnglishWordClassGenerator.scala
similarity index 100%
rename from src/main/scala/epic/features/EnglishWordClassGenerator.scala
rename to modules/core/src/main/scala/epic/features/EnglishWordClassGenerator.scala
diff --git a/src/main/scala/epic/features/HackyHeadFinder.scala b/modules/core/src/main/scala/epic/features/HackyHeadFinder.scala
similarity index 100%
rename from src/main/scala/epic/features/HackyHeadFinder.scala
rename to modules/core/src/main/scala/epic/features/HackyHeadFinder.scala
diff --git a/src/main/scala/epic/features/HackyHeadFinderTest.scala b/modules/core/src/main/scala/epic/features/HackyHeadFinderTest.scala
similarity index 100%
rename from src/main/scala/epic/features/HackyHeadFinderTest.scala
rename to modules/core/src/main/scala/epic/features/HackyHeadFinderTest.scala
diff --git a/src/main/scala/epic/features/HackyLexicalProductionFeaturizer.scala b/modules/core/src/main/scala/epic/features/HackyLexicalProductionFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/HackyLexicalProductionFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/HackyLexicalProductionFeaturizer.scala
diff --git a/src/main/scala/epic/features/HackyLexicalSplitFeaturizer.scala b/modules/core/src/main/scala/epic/features/HackyLexicalSplitFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/HackyLexicalSplitFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/HackyLexicalSplitFeaturizer.scala
diff --git a/src/main/scala/epic/features/HashExtendingIndex.scala b/modules/core/src/main/scala/epic/features/HashExtendingIndex.scala
similarity index 100%
rename from src/main/scala/epic/features/HashExtendingIndex.scala
rename to modules/core/src/main/scala/epic/features/HashExtendingIndex.scala
diff --git a/src/main/scala/epic/features/HashFeature.scala b/modules/core/src/main/scala/epic/features/HashFeature.scala
similarity index 100%
rename from src/main/scala/epic/features/HashFeature.scala
rename to modules/core/src/main/scala/epic/features/HashFeature.scala
diff --git a/src/main/scala/epic/features/HierarchicalClusters.scala b/modules/core/src/main/scala/epic/features/HierarchicalClusters.scala
similarity index 100%
rename from src/main/scala/epic/features/HierarchicalClusters.scala
rename to modules/core/src/main/scala/epic/features/HierarchicalClusters.scala
diff --git a/src/main/scala/epic/features/IdentityWordFeaturizer.scala b/modules/core/src/main/scala/epic/features/IdentityWordFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/IdentityWordFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/IdentityWordFeaturizer.scala
diff --git a/src/main/scala/epic/features/IndexedSurfaceFeaturizer.scala b/modules/core/src/main/scala/epic/features/IndexedSurfaceFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/IndexedSurfaceFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/IndexedSurfaceFeaturizer.scala
diff --git a/src/main/scala/epic/features/IndexedWordAnchoring.scala b/modules/core/src/main/scala/epic/features/IndexedWordAnchoring.scala
similarity index 100%
rename from src/main/scala/epic/features/IndexedWordAnchoring.scala
rename to modules/core/src/main/scala/epic/features/IndexedWordAnchoring.scala
diff --git a/src/main/scala/epic/features/IndexedWordFeaturizer.scala b/modules/core/src/main/scala/epic/features/IndexedWordFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/IndexedWordFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/IndexedWordFeaturizer.scala
diff --git a/src/main/scala/epic/features/IndicatorFeature.scala b/modules/core/src/main/scala/epic/features/IndicatorFeature.scala
similarity index 100%
rename from src/main/scala/epic/features/IndicatorFeature.scala
rename to modules/core/src/main/scala/epic/features/IndicatorFeature.scala
diff --git a/src/main/scala/epic/features/LabelFeature.scala b/modules/core/src/main/scala/epic/features/LabelFeature.scala
similarity index 100%
rename from src/main/scala/epic/features/LabelFeature.scala
rename to modules/core/src/main/scala/epic/features/LabelFeature.scala
diff --git a/src/main/scala/epic/features/LongestFrequentSuffixFeaturizer.scala b/modules/core/src/main/scala/epic/features/LongestFrequentSuffixFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/LongestFrequentSuffixFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/LongestFrequentSuffixFeaturizer.scala
diff --git a/src/main/scala/epic/features/MinimalWordFeaturizer.scala b/modules/core/src/main/scala/epic/features/MinimalWordFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/MinimalWordFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/MinimalWordFeaturizer.scala
diff --git a/src/main/scala/epic/features/MorphFeaturizer.scala b/modules/core/src/main/scala/epic/features/MorphFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/MorphFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/MorphFeaturizer.scala
diff --git a/src/main/scala/epic/features/MultiSurfaceFeaturizer.scala b/modules/core/src/main/scala/epic/features/MultiSurfaceFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/MultiSurfaceFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/MultiSurfaceFeaturizer.scala
diff --git a/src/main/scala/epic/features/MultiWordFeaturizer.scala b/modules/core/src/main/scala/epic/features/MultiWordFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/MultiWordFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/MultiWordFeaturizer.scala
diff --git a/src/main/scala/epic/features/NGramSpanFeaturizer.scala b/modules/core/src/main/scala/epic/features/NGramSpanFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/NGramSpanFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/NGramSpanFeaturizer.scala
diff --git a/src/main/scala/epic/features/NGramSurfaceFeaturizer.scala b/modules/core/src/main/scala/epic/features/NGramSurfaceFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/NGramSurfaceFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/NGramSurfaceFeaturizer.scala
diff --git a/src/main/scala/epic/features/NonRedundantIndexBuilder.scala b/modules/core/src/main/scala/epic/features/NonRedundantIndexBuilder.scala
similarity index 100%
rename from src/main/scala/epic/features/NonRedundantIndexBuilder.scala
rename to modules/core/src/main/scala/epic/features/NonRedundantIndexBuilder.scala
diff --git a/src/main/scala/epic/features/NormalIndexBuilder.scala b/modules/core/src/main/scala/epic/features/NormalIndexBuilder.scala
similarity index 100%
rename from src/main/scala/epic/features/NormalIndexBuilder.scala
rename to modules/core/src/main/scala/epic/features/NormalIndexBuilder.scala
diff --git a/src/main/scala/epic/features/OffsetWordFeaturizer.scala b/modules/core/src/main/scala/epic/features/OffsetWordFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/OffsetWordFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/OffsetWordFeaturizer.scala
diff --git a/src/main/scala/epic/features/PorterStemmer.scala b/modules/core/src/main/scala/epic/features/PorterStemmer.scala
similarity index 100%
rename from src/main/scala/epic/features/PorterStemmer.scala
rename to modules/core/src/main/scala/epic/features/PorterStemmer.scala
diff --git a/src/main/scala/epic/features/ProductSurfaceFeaturizer.scala b/modules/core/src/main/scala/epic/features/ProductSurfaceFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/ProductSurfaceFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/ProductSurfaceFeaturizer.scala
diff --git a/src/main/scala/epic/features/ProductWordFeaturizer.scala b/modules/core/src/main/scala/epic/features/ProductWordFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/ProductWordFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/ProductWordFeaturizer.scala
diff --git a/src/main/scala/epic/features/RuleAndSpansFeaturizer.scala b/modules/core/src/main/scala/epic/features/RuleAndSpansFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/RuleAndSpansFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/RuleAndSpansFeaturizer.scala
diff --git a/src/main/scala/epic/features/SegmentedIndex.scala b/modules/core/src/main/scala/epic/features/SegmentedIndex.scala
similarity index 100%
rename from src/main/scala/epic/features/SegmentedIndex.scala
rename to modules/core/src/main/scala/epic/features/SegmentedIndex.scala
diff --git a/src/main/scala/epic/features/SentencePropertiesFeaturizer.scala b/modules/core/src/main/scala/epic/features/SentencePropertiesFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/SentencePropertiesFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/SentencePropertiesFeaturizer.scala
diff --git a/src/main/scala/epic/features/SpanLengthFeaturizer.scala b/modules/core/src/main/scala/epic/features/SpanLengthFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/SpanLengthFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/SpanLengthFeaturizer.scala
diff --git a/src/main/scala/epic/features/SpanShapeGenerator.scala b/modules/core/src/main/scala/epic/features/SpanShapeGenerator.scala
similarity index 100%
rename from src/main/scala/epic/features/SpanShapeGenerator.scala
rename to modules/core/src/main/scala/epic/features/SpanShapeGenerator.scala
diff --git a/src/main/scala/epic/features/SplitSpanFeaturizer.scala b/modules/core/src/main/scala/epic/features/SplitSpanFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/SplitSpanFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/SplitSpanFeaturizer.scala
diff --git a/src/main/scala/epic/features/StandardSurfaceFeaturizer.scala b/modules/core/src/main/scala/epic/features/StandardSurfaceFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/StandardSurfaceFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/StandardSurfaceFeaturizer.scala
diff --git a/src/main/scala/epic/features/SurfaceFeatureAnchoring.scala b/modules/core/src/main/scala/epic/features/SurfaceFeatureAnchoring.scala
similarity index 100%
rename from src/main/scala/epic/features/SurfaceFeatureAnchoring.scala
rename to modules/core/src/main/scala/epic/features/SurfaceFeatureAnchoring.scala
diff --git a/src/main/scala/epic/features/SurfaceFeaturizer.scala b/modules/core/src/main/scala/epic/features/SurfaceFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/SurfaceFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/SurfaceFeaturizer.scala
diff --git a/src/main/scala/epic/features/TagDictionaryFeaturizer.scala b/modules/core/src/main/scala/epic/features/TagDictionaryFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/TagDictionaryFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/TagDictionaryFeaturizer.scala
diff --git a/src/main/scala/epic/features/TagSpanShapeFeaturizer.scala b/modules/core/src/main/scala/epic/features/TagSpanShapeFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/TagSpanShapeFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/TagSpanShapeFeaturizer.scala
diff --git a/src/main/scala/epic/features/TransformedWordFeaturizer.scala b/modules/core/src/main/scala/epic/features/TransformedWordFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/TransformedWordFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/TransformedWordFeaturizer.scala
diff --git a/src/main/scala/epic/features/WordClassFeaturizer.scala b/modules/core/src/main/scala/epic/features/WordClassFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/WordClassFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/WordClassFeaturizer.scala
diff --git a/src/main/scala/epic/features/WordFeatureAnchoring.scala b/modules/core/src/main/scala/epic/features/WordFeatureAnchoring.scala
similarity index 100%
rename from src/main/scala/epic/features/WordFeatureAnchoring.scala
rename to modules/core/src/main/scala/epic/features/WordFeatureAnchoring.scala
diff --git a/src/main/scala/epic/features/WordFeaturizer.scala b/modules/core/src/main/scala/epic/features/WordFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/WordFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/WordFeaturizer.scala
diff --git a/src/main/scala/epic/features/WordPrefixFeaturizer.scala b/modules/core/src/main/scala/epic/features/WordPrefixFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/WordPrefixFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/WordPrefixFeaturizer.scala
diff --git a/src/main/scala/epic/features/WordPropertyFeaturizer.scala b/modules/core/src/main/scala/epic/features/WordPropertyFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/WordPropertyFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/WordPropertyFeaturizer.scala
diff --git a/src/main/scala/epic/features/WordShapeFeaturizer.scala b/modules/core/src/main/scala/epic/features/WordShapeFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/WordShapeFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/WordShapeFeaturizer.scala
diff --git a/src/main/scala/epic/features/WordShapeGenerator.scala b/modules/core/src/main/scala/epic/features/WordShapeGenerator.scala
similarity index 100%
rename from src/main/scala/epic/features/WordShapeGenerator.scala
rename to modules/core/src/main/scala/epic/features/WordShapeGenerator.scala
diff --git a/src/main/scala/epic/features/WordSuffixFeaturizer.scala b/modules/core/src/main/scala/epic/features/WordSuffixFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/features/WordSuffixFeaturizer.scala
rename to modules/core/src/main/scala/epic/features/WordSuffixFeaturizer.scala
diff --git a/src/main/scala/epic/features/package.scala b/modules/core/src/main/scala/epic/features/package.scala
similarity index 100%
rename from src/main/scala/epic/features/package.scala
rename to modules/core/src/main/scala/epic/features/package.scala
diff --git a/src/main/scala/epic/framework/AnnotatingInference.scala b/modules/core/src/main/scala/epic/framework/AnnotatingInference.scala
similarity index 100%
rename from src/main/scala/epic/framework/AnnotatingInference.scala
rename to modules/core/src/main/scala/epic/framework/AnnotatingInference.scala
diff --git a/src/main/scala/epic/framework/EPInference.scala b/modules/core/src/main/scala/epic/framework/EPInference.scala
similarity index 100%
rename from src/main/scala/epic/framework/EPInference.scala
rename to modules/core/src/main/scala/epic/framework/EPInference.scala
diff --git a/src/main/scala/epic/framework/EPModel.scala b/modules/core/src/main/scala/epic/framework/EPModel.scala
similarity index 100%
rename from src/main/scala/epic/framework/EPModel.scala
rename to modules/core/src/main/scala/epic/framework/EPModel.scala
diff --git a/src/main/scala/epic/framework/EvaluableModel.scala b/modules/core/src/main/scala/epic/framework/EvaluableModel.scala
similarity index 100%
rename from src/main/scala/epic/framework/EvaluableModel.scala
rename to modules/core/src/main/scala/epic/framework/EvaluableModel.scala
diff --git a/src/main/scala/epic/framework/EvaluationResult.scala b/modules/core/src/main/scala/epic/framework/EvaluationResult.scala
similarity index 100%
rename from src/main/scala/epic/framework/EvaluationResult.scala
rename to modules/core/src/main/scala/epic/framework/EvaluationResult.scala
diff --git a/src/main/scala/epic/framework/Example.scala b/modules/core/src/main/scala/epic/framework/Example.scala
similarity index 100%
rename from src/main/scala/epic/framework/Example.scala
rename to modules/core/src/main/scala/epic/framework/Example.scala
diff --git a/src/main/scala/epic/framework/ExpectedCounts.scala b/modules/core/src/main/scala/epic/framework/ExpectedCounts.scala
similarity index 100%
rename from src/main/scala/epic/framework/ExpectedCounts.scala
rename to modules/core/src/main/scala/epic/framework/ExpectedCounts.scala
diff --git a/src/main/scala/epic/framework/Feature.scala b/modules/core/src/main/scala/epic/framework/Feature.scala
similarity index 100%
rename from src/main/scala/epic/framework/Feature.scala
rename to modules/core/src/main/scala/epic/framework/Feature.scala
diff --git a/src/main/scala/epic/framework/Inference.scala b/modules/core/src/main/scala/epic/framework/Inference.scala
similarity index 100%
rename from src/main/scala/epic/framework/Inference.scala
rename to modules/core/src/main/scala/epic/framework/Inference.scala
diff --git a/src/main/scala/epic/framework/LossAugmentation.scala b/modules/core/src/main/scala/epic/framework/LossAugmentation.scala
similarity index 100%
rename from src/main/scala/epic/framework/LossAugmentation.scala
rename to modules/core/src/main/scala/epic/framework/LossAugmentation.scala
diff --git a/src/main/scala/epic/framework/Marginal.scala b/modules/core/src/main/scala/epic/framework/Marginal.scala
similarity index 100%
rename from src/main/scala/epic/framework/Marginal.scala
rename to modules/core/src/main/scala/epic/framework/Marginal.scala
diff --git a/src/main/scala/epic/framework/Model.scala b/modules/core/src/main/scala/epic/framework/Model.scala
similarity index 100%
rename from src/main/scala/epic/framework/Model.scala
rename to modules/core/src/main/scala/epic/framework/Model.scala
diff --git a/src/main/scala/epic/framework/ModelFactory.scala b/modules/core/src/main/scala/epic/framework/ModelFactory.scala
similarity index 100%
rename from src/main/scala/epic/framework/ModelFactory.scala
rename to modules/core/src/main/scala/epic/framework/ModelFactory.scala
diff --git a/src/main/scala/epic/framework/ModelObjective.scala b/modules/core/src/main/scala/epic/framework/ModelObjective.scala
similarity index 100%
rename from src/main/scala/epic/framework/ModelObjective.scala
rename to modules/core/src/main/scala/epic/framework/ModelObjective.scala
diff --git a/src/main/scala/epic/framework/OneBestInferenceAdaptor.scala b/modules/core/src/main/scala/epic/framework/OneBestInferenceAdaptor.scala
similarity index 100%
rename from src/main/scala/epic/framework/OneBestInferenceAdaptor.scala
rename to modules/core/src/main/scala/epic/framework/OneBestInferenceAdaptor.scala
diff --git a/src/main/scala/epic/framework/StandardExpectedCounts.scala b/modules/core/src/main/scala/epic/framework/StandardExpectedCounts.scala
similarity index 100%
rename from src/main/scala/epic/framework/StandardExpectedCounts.scala
rename to modules/core/src/main/scala/epic/framework/StandardExpectedCounts.scala
diff --git a/src/main/scala/epic/framework/StructSVM.scala b/modules/core/src/main/scala/epic/framework/StructSVM.scala
similarity index 100%
rename from src/main/scala/epic/framework/StructSVM.scala
rename to modules/core/src/main/scala/epic/framework/StructSVM.scala
diff --git a/src/main/scala/epic/framework/StructuredPerceptron.scala b/modules/core/src/main/scala/epic/framework/StructuredPerceptron.scala
similarity index 100%
rename from src/main/scala/epic/framework/StructuredPerceptron.scala
rename to modules/core/src/main/scala/epic/framework/StructuredPerceptron.scala
diff --git a/src/main/scala/epic/inference/ExpectationPropagation.scala b/modules/core/src/main/scala/epic/inference/ExpectationPropagation.scala
similarity index 100%
rename from src/main/scala/epic/inference/ExpectationPropagation.scala
rename to modules/core/src/main/scala/epic/inference/ExpectationPropagation.scala
diff --git a/src/main/scala/epic/inference/Factor.scala b/modules/core/src/main/scala/epic/inference/Factor.scala
similarity index 100%
rename from src/main/scala/epic/inference/Factor.scala
rename to modules/core/src/main/scala/epic/inference/Factor.scala
diff --git a/src/main/scala/epic/lexicon/Lexicon.scala b/modules/core/src/main/scala/epic/lexicon/Lexicon.scala
similarity index 100%
rename from src/main/scala/epic/lexicon/Lexicon.scala
rename to modules/core/src/main/scala/epic/lexicon/Lexicon.scala
diff --git a/src/main/scala/epic/lexicon/SignatureLexicon.scala b/modules/core/src/main/scala/epic/lexicon/SignatureLexicon.scala
similarity index 100%
rename from src/main/scala/epic/lexicon/SignatureLexicon.scala
rename to modules/core/src/main/scala/epic/lexicon/SignatureLexicon.scala
diff --git a/src/main/scala/epic/lexicon/SignatureTagScorer.scala b/modules/core/src/main/scala/epic/lexicon/SignatureTagScorer.scala
similarity index 100%
rename from src/main/scala/epic/lexicon/SignatureTagScorer.scala
rename to modules/core/src/main/scala/epic/lexicon/SignatureTagScorer.scala
diff --git a/src/main/scala/epic/lexicon/SimpleLexicon.scala b/modules/core/src/main/scala/epic/lexicon/SimpleLexicon.scala
similarity index 100%
rename from src/main/scala/epic/lexicon/SimpleLexicon.scala
rename to modules/core/src/main/scala/epic/lexicon/SimpleLexicon.scala
diff --git a/src/main/scala/epic/lexicon/TagScorer.scala b/modules/core/src/main/scala/epic/lexicon/TagScorer.scala
similarity index 100%
rename from src/main/scala/epic/lexicon/TagScorer.scala
rename to modules/core/src/main/scala/epic/lexicon/TagScorer.scala
diff --git a/src/main/scala/epic/lexicon/UnsmoothedLexicon.scala b/modules/core/src/main/scala/epic/lexicon/UnsmoothedLexicon.scala
similarity index 100%
rename from src/main/scala/epic/lexicon/UnsmoothedLexicon.scala
rename to modules/core/src/main/scala/epic/lexicon/UnsmoothedLexicon.scala
diff --git a/src/main/scala/epic/logo/ArgmaxInferencer.scala b/modules/core/src/main/scala/epic/logo/ArgmaxInferencer.scala
similarity index 100%
rename from src/main/scala/epic/logo/ArgmaxInferencer.scala
rename to modules/core/src/main/scala/epic/logo/ArgmaxInferencer.scala
diff --git a/src/main/scala/epic/logo/CompoundIterationCallback.scala b/modules/core/src/main/scala/epic/logo/CompoundIterationCallback.scala
similarity index 100%
rename from src/main/scala/epic/logo/CompoundIterationCallback.scala
rename to modules/core/src/main/scala/epic/logo/CompoundIterationCallback.scala
diff --git a/src/main/scala/epic/logo/ConvergenceChecker.scala b/modules/core/src/main/scala/epic/logo/ConvergenceChecker.scala
similarity index 100%
rename from src/main/scala/epic/logo/ConvergenceChecker.scala
rename to modules/core/src/main/scala/epic/logo/ConvergenceChecker.scala
diff --git a/src/main/scala/epic/logo/Decoder.scala b/modules/core/src/main/scala/epic/logo/Decoder.scala
similarity index 100%
rename from src/main/scala/epic/logo/Decoder.scala
rename to modules/core/src/main/scala/epic/logo/Decoder.scala
diff --git a/src/main/scala/epic/logo/DualVariableHolder.scala b/modules/core/src/main/scala/epic/logo/DualVariableHolder.scala
similarity index 100%
rename from src/main/scala/epic/logo/DualVariableHolder.scala
rename to modules/core/src/main/scala/epic/logo/DualVariableHolder.scala
diff --git a/src/main/scala/epic/logo/ExpectationInferencer.scala b/modules/core/src/main/scala/epic/logo/ExpectationInferencer.scala
similarity index 100%
rename from src/main/scala/epic/logo/ExpectationInferencer.scala
rename to modules/core/src/main/scala/epic/logo/ExpectationInferencer.scala
diff --git a/src/main/scala/epic/logo/FixedIterationConvergenceChecker.scala b/modules/core/src/main/scala/epic/logo/FixedIterationConvergenceChecker.scala
similarity index 100%
rename from src/main/scala/epic/logo/FixedIterationConvergenceChecker.scala
rename to modules/core/src/main/scala/epic/logo/FixedIterationConvergenceChecker.scala
diff --git a/src/main/scala/epic/logo/FixedStepSizeUpdater.scala b/modules/core/src/main/scala/epic/logo/FixedStepSizeUpdater.scala
similarity index 100%
rename from src/main/scala/epic/logo/FixedStepSizeUpdater.scala
rename to modules/core/src/main/scala/epic/logo/FixedStepSizeUpdater.scala
diff --git a/src/main/scala/epic/logo/Inferencer.scala b/modules/core/src/main/scala/epic/logo/Inferencer.scala
similarity index 100%
rename from src/main/scala/epic/logo/Inferencer.scala
rename to modules/core/src/main/scala/epic/logo/Inferencer.scala
diff --git a/src/main/scala/epic/logo/IterationCallback.scala b/modules/core/src/main/scala/epic/logo/IterationCallback.scala
similarity index 100%
rename from src/main/scala/epic/logo/IterationCallback.scala
rename to modules/core/src/main/scala/epic/logo/IterationCallback.scala
diff --git a/src/main/scala/epic/logo/L1Objective.scala b/modules/core/src/main/scala/epic/logo/L1Objective.scala
similarity index 100%
rename from src/main/scala/epic/logo/L1Objective.scala
rename to modules/core/src/main/scala/epic/logo/L1Objective.scala
diff --git a/src/main/scala/epic/logo/L1Updater.scala b/modules/core/src/main/scala/epic/logo/L1Updater.scala
similarity index 100%
rename from src/main/scala/epic/logo/L1Updater.scala
rename to modules/core/src/main/scala/epic/logo/L1Updater.scala
diff --git a/src/main/scala/epic/logo/L2Objective.scala b/modules/core/src/main/scala/epic/logo/L2Objective.scala
similarity index 100%
rename from src/main/scala/epic/logo/L2Objective.scala
rename to modules/core/src/main/scala/epic/logo/L2Objective.scala
diff --git a/src/main/scala/epic/logo/L2Updater.scala b/modules/core/src/main/scala/epic/logo/L2Updater.scala
similarity index 100%
rename from src/main/scala/epic/logo/L2Updater.scala
rename to modules/core/src/main/scala/epic/logo/L2Updater.scala
diff --git a/src/main/scala/epic/logo/LogLikelihoodDecoder.scala b/modules/core/src/main/scala/epic/logo/LogLikelihoodDecoder.scala
similarity index 100%
rename from src/main/scala/epic/logo/LogLikelihoodDecoder.scala
rename to modules/core/src/main/scala/epic/logo/LogLikelihoodDecoder.scala
diff --git a/src/main/scala/epic/logo/LogoOpts.scala b/modules/core/src/main/scala/epic/logo/LogoOpts.scala
similarity index 100%
rename from src/main/scala/epic/logo/LogoOpts.scala
rename to modules/core/src/main/scala/epic/logo/LogoOpts.scala
diff --git a/src/main/scala/epic/logo/LossAugmentedArgmaxInferencer.scala b/modules/core/src/main/scala/epic/logo/LossAugmentedArgmaxInferencer.scala
similarity index 100%
rename from src/main/scala/epic/logo/LossAugmentedArgmaxInferencer.scala
rename to modules/core/src/main/scala/epic/logo/LossAugmentedArgmaxInferencer.scala
diff --git a/src/main/scala/epic/logo/LossAugmentedExpectationInferencer.scala b/modules/core/src/main/scala/epic/logo/LossAugmentedExpectationInferencer.scala
similarity index 100%
rename from src/main/scala/epic/logo/LossAugmentedExpectationInferencer.scala
rename to modules/core/src/main/scala/epic/logo/LossAugmentedExpectationInferencer.scala
diff --git a/src/main/scala/epic/logo/LossAugmentedMaxMarginDecoder.scala b/modules/core/src/main/scala/epic/logo/LossAugmentedMaxMarginDecoder.scala
similarity index 100%
rename from src/main/scala/epic/logo/LossAugmentedMaxMarginDecoder.scala
rename to modules/core/src/main/scala/epic/logo/LossAugmentedMaxMarginDecoder.scala
diff --git a/src/main/scala/epic/logo/MaxMarginDecoder.scala b/modules/core/src/main/scala/epic/logo/MaxMarginDecoder.scala
similarity index 100%
rename from src/main/scala/epic/logo/MaxMarginDecoder.scala
rename to modules/core/src/main/scala/epic/logo/MaxMarginDecoder.scala
diff --git a/src/main/scala/epic/logo/MaxMarginRankingDecoder.scala b/modules/core/src/main/scala/epic/logo/MaxMarginRankingDecoder.scala
similarity index 100%
rename from src/main/scala/epic/logo/MaxMarginRankingDecoder.scala
rename to modules/core/src/main/scala/epic/logo/MaxMarginRankingDecoder.scala
diff --git a/src/main/scala/epic/logo/MinibatchInput.scala b/modules/core/src/main/scala/epic/logo/MinibatchInput.scala
similarity index 100%
rename from src/main/scala/epic/logo/MinibatchInput.scala
rename to modules/core/src/main/scala/epic/logo/MinibatchInput.scala
diff --git a/src/main/scala/epic/logo/MulticlassClassifier.scala b/modules/core/src/main/scala/epic/logo/MulticlassClassifier.scala
similarity index 100%
rename from src/main/scala/epic/logo/MulticlassClassifier.scala
rename to modules/core/src/main/scala/epic/logo/MulticlassClassifier.scala
diff --git a/src/main/scala/epic/logo/MulticlassLossAugmentedArgmaxInferencer.scala b/modules/core/src/main/scala/epic/logo/MulticlassLossAugmentedArgmaxInferencer.scala
similarity index 100%
rename from src/main/scala/epic/logo/MulticlassLossAugmentedArgmaxInferencer.scala
rename to modules/core/src/main/scala/epic/logo/MulticlassLossAugmentedArgmaxInferencer.scala
diff --git a/src/main/scala/epic/logo/MulticlassOneSlackLossAugmentedArgmaxInferencer.scala b/modules/core/src/main/scala/epic/logo/MulticlassOneSlackLossAugmentedArgmaxInferencer.scala
similarity index 100%
rename from src/main/scala/epic/logo/MulticlassOneSlackLossAugmentedArgmaxInferencer.scala
rename to modules/core/src/main/scala/epic/logo/MulticlassOneSlackLossAugmentedArgmaxInferencer.scala
diff --git a/src/main/scala/epic/logo/MulticlassOneSlackOracleInferencer.scala b/modules/core/src/main/scala/epic/logo/MulticlassOneSlackOracleInferencer.scala
similarity index 100%
rename from src/main/scala/epic/logo/MulticlassOneSlackOracleInferencer.scala
rename to modules/core/src/main/scala/epic/logo/MulticlassOneSlackOracleInferencer.scala
diff --git a/src/main/scala/epic/logo/MulticlassOracleInferencer.scala b/modules/core/src/main/scala/epic/logo/MulticlassOracleInferencer.scala
similarity index 100%
rename from src/main/scala/epic/logo/MulticlassOracleInferencer.scala
rename to modules/core/src/main/scala/epic/logo/MulticlassOracleInferencer.scala
diff --git a/src/main/scala/epic/logo/NumUtils.scala b/modules/core/src/main/scala/epic/logo/NumUtils.scala
similarity index 100%
rename from src/main/scala/epic/logo/NumUtils.scala
rename to modules/core/src/main/scala/epic/logo/NumUtils.scala
diff --git a/src/main/scala/epic/logo/ObjectiveFunction.scala b/modules/core/src/main/scala/epic/logo/ObjectiveFunction.scala
similarity index 100%
rename from src/main/scala/epic/logo/ObjectiveFunction.scala
rename to modules/core/src/main/scala/epic/logo/ObjectiveFunction.scala
diff --git a/src/main/scala/epic/logo/ObjectiveFunctionConvergenceChecker.scala b/modules/core/src/main/scala/epic/logo/ObjectiveFunctionConvergenceChecker.scala
similarity index 100%
rename from src/main/scala/epic/logo/ObjectiveFunctionConvergenceChecker.scala
rename to modules/core/src/main/scala/epic/logo/ObjectiveFunctionConvergenceChecker.scala
diff --git a/src/main/scala/epic/logo/OracleInferencer.scala b/modules/core/src/main/scala/epic/logo/OracleInferencer.scala
similarity index 100%
rename from src/main/scala/epic/logo/OracleInferencer.scala
rename to modules/core/src/main/scala/epic/logo/OracleInferencer.scala
diff --git a/src/main/scala/epic/logo/PegasosUpdater.scala b/modules/core/src/main/scala/epic/logo/PegasosUpdater.scala
similarity index 100%
rename from src/main/scala/epic/logo/PegasosUpdater.scala
rename to modules/core/src/main/scala/epic/logo/PegasosUpdater.scala
diff --git a/src/main/scala/epic/logo/Trainer.scala b/modules/core/src/main/scala/epic/logo/Trainer.scala
similarity index 100%
rename from src/main/scala/epic/logo/Trainer.scala
rename to modules/core/src/main/scala/epic/logo/Trainer.scala
diff --git a/src/main/scala/epic/logo/Updater.scala b/modules/core/src/main/scala/epic/logo/Updater.scala
similarity index 100%
rename from src/main/scala/epic/logo/Updater.scala
rename to modules/core/src/main/scala/epic/logo/Updater.scala
diff --git a/src/main/scala/epic/logo/Weights.scala b/modules/core/src/main/scala/epic/logo/Weights.scala
similarity index 100%
rename from src/main/scala/epic/logo/Weights.scala
rename to modules/core/src/main/scala/epic/logo/Weights.scala
diff --git a/src/main/scala/epic/logo/package.scala b/modules/core/src/main/scala/epic/logo/package.scala
similarity index 100%
rename from src/main/scala/epic/logo/package.scala
rename to modules/core/src/main/scala/epic/logo/package.scala
diff --git a/src/main/scala/epic/models/LanguageSpecific.scala b/modules/core/src/main/scala/epic/models/LanguageSpecific.scala
similarity index 100%
rename from src/main/scala/epic/models/LanguageSpecific.scala
rename to modules/core/src/main/scala/epic/models/LanguageSpecific.scala
diff --git a/src/main/scala/epic/models/ModelLoader.scala b/modules/core/src/main/scala/epic/models/ModelLoader.scala
similarity index 100%
rename from src/main/scala/epic/models/ModelLoader.scala
rename to modules/core/src/main/scala/epic/models/ModelLoader.scala
diff --git a/src/main/scala/epic/models/ModelSelector.scala b/modules/core/src/main/scala/epic/models/ModelSelector.scala
similarity index 100%
rename from src/main/scala/epic/models/ModelSelector.scala
rename to modules/core/src/main/scala/epic/models/ModelSelector.scala
diff --git a/src/main/scala/epic/models/NerModelLoader.scala b/modules/core/src/main/scala/epic/models/NerModelLoader.scala
similarity index 100%
rename from src/main/scala/epic/models/NerModelLoader.scala
rename to modules/core/src/main/scala/epic/models/NerModelLoader.scala
diff --git a/src/main/scala/epic/models/ParserSelector.scala b/modules/core/src/main/scala/epic/models/ParserSelector.scala
similarity index 100%
rename from src/main/scala/epic/models/ParserSelector.scala
rename to modules/core/src/main/scala/epic/models/ParserSelector.scala
diff --git a/src/main/scala/epic/models/PosTagModelLoader.scala b/modules/core/src/main/scala/epic/models/PosTagModelLoader.scala
similarity index 100%
rename from src/main/scala/epic/models/PosTagModelLoader.scala
rename to modules/core/src/main/scala/epic/models/PosTagModelLoader.scala
diff --git a/src/main/scala/epic/models/package.scala b/modules/core/src/main/scala/epic/models/package.scala
similarity index 100%
rename from src/main/scala/epic/models/package.scala
rename to modules/core/src/main/scala/epic/models/package.scala
diff --git a/src/main/scala/epic/ontonotes/ConllOntoReader.scala b/modules/core/src/main/scala/epic/ontonotes/ConllOntoReader.scala
similarity index 100%
rename from src/main/scala/epic/ontonotes/ConllOntoReader.scala
rename to modules/core/src/main/scala/epic/ontonotes/ConllOntoReader.scala
diff --git a/src/main/scala/epic/ontonotes/DSpan.scala b/modules/core/src/main/scala/epic/ontonotes/DSpan.scala
similarity index 100%
rename from src/main/scala/epic/ontonotes/DSpan.scala
rename to modules/core/src/main/scala/epic/ontonotes/DSpan.scala
diff --git a/src/main/scala/epic/ontonotes/Document.scala b/modules/core/src/main/scala/epic/ontonotes/Document.scala
similarity index 100%
rename from src/main/scala/epic/ontonotes/Document.scala
rename to modules/core/src/main/scala/epic/ontonotes/Document.scala
diff --git a/src/main/scala/epic/ontonotes/Sentence.scala b/modules/core/src/main/scala/epic/ontonotes/Sentence.scala
similarity index 100%
rename from src/main/scala/epic/ontonotes/Sentence.scala
rename to modules/core/src/main/scala/epic/ontonotes/Sentence.scala
diff --git a/src/main/scala/epic/package.scala b/modules/core/src/main/scala/epic/package.scala
similarity index 100%
rename from src/main/scala/epic/package.scala
rename to modules/core/src/main/scala/epic/package.scala
diff --git a/src/main/scala/epic/parser/AnchoredVisitor.scala b/modules/core/src/main/scala/epic/parser/AnchoredVisitor.scala
similarity index 100%
rename from src/main/scala/epic/parser/AnchoredVisitor.scala
rename to modules/core/src/main/scala/epic/parser/AnchoredVisitor.scala
diff --git a/src/main/scala/epic/parser/ChartDecoder.scala b/modules/core/src/main/scala/epic/parser/ChartDecoder.scala
similarity index 100%
rename from src/main/scala/epic/parser/ChartDecoder.scala
rename to modules/core/src/main/scala/epic/parser/ChartDecoder.scala
diff --git a/src/main/scala/epic/parser/EPChartFactory.scala b/modules/core/src/main/scala/epic/parser/EPChartFactory.scala
similarity index 100%
rename from src/main/scala/epic/parser/EPChartFactory.scala
rename to modules/core/src/main/scala/epic/parser/EPChartFactory.scala
diff --git a/src/main/scala/epic/parser/GenerativeParser.scala b/modules/core/src/main/scala/epic/parser/GenerativeParser.scala
similarity index 100%
rename from src/main/scala/epic/parser/GenerativeParser.scala
rename to modules/core/src/main/scala/epic/parser/GenerativeParser.scala
diff --git a/src/main/scala/epic/parser/Grammar.scala b/modules/core/src/main/scala/epic/parser/Grammar.scala
similarity index 100%
rename from src/main/scala/epic/parser/Grammar.scala
rename to modules/core/src/main/scala/epic/parser/Grammar.scala
diff --git a/src/main/scala/epic/parser/GrammarAnchoring.scala b/modules/core/src/main/scala/epic/parser/GrammarAnchoring.scala
similarity index 100%
rename from src/main/scala/epic/parser/GrammarAnchoring.scala
rename to modules/core/src/main/scala/epic/parser/GrammarAnchoring.scala
diff --git a/src/main/scala/epic/parser/LatentTreeMarginal.scala b/modules/core/src/main/scala/epic/parser/LatentTreeMarginal.scala
similarity index 100%
rename from src/main/scala/epic/parser/LatentTreeMarginal.scala
rename to modules/core/src/main/scala/epic/parser/LatentTreeMarginal.scala
diff --git a/src/main/scala/epic/parser/ParseEval.scala b/modules/core/src/main/scala/epic/parser/ParseEval.scala
similarity index 100%
rename from src/main/scala/epic/parser/ParseEval.scala
rename to modules/core/src/main/scala/epic/parser/ParseEval.scala
diff --git a/src/main/scala/epic/parser/ParseMarginal.scala b/modules/core/src/main/scala/epic/parser/ParseMarginal.scala
similarity index 100%
rename from src/main/scala/epic/parser/ParseMarginal.scala
rename to modules/core/src/main/scala/epic/parser/ParseMarginal.scala
diff --git a/src/main/scala/epic/parser/ParseText.scala b/modules/core/src/main/scala/epic/parser/ParseText.scala
similarity index 100%
rename from src/main/scala/epic/parser/ParseText.scala
rename to modules/core/src/main/scala/epic/parser/ParseText.scala
diff --git a/src/main/scala/epic/parser/Parser.scala b/modules/core/src/main/scala/epic/parser/Parser.scala
similarity index 100%
rename from src/main/scala/epic/parser/Parser.scala
rename to modules/core/src/main/scala/epic/parser/Parser.scala
diff --git a/src/main/scala/epic/parser/ParserAnnotator.scala b/modules/core/src/main/scala/epic/parser/ParserAnnotator.scala
similarity index 100%
rename from src/main/scala/epic/parser/ParserAnnotator.scala
rename to modules/core/src/main/scala/epic/parser/ParserAnnotator.scala
diff --git a/src/main/scala/epic/parser/ParserPipeline.scala b/modules/core/src/main/scala/epic/parser/ParserPipeline.scala
similarity index 100%
rename from src/main/scala/epic/parser/ParserPipeline.scala
rename to modules/core/src/main/scala/epic/parser/ParserPipeline.scala
diff --git a/src/main/scala/epic/parser/ParserTester.scala b/modules/core/src/main/scala/epic/parser/ParserTester.scala
similarity index 100%
rename from src/main/scala/epic/parser/ParserTester.scala
rename to modules/core/src/main/scala/epic/parser/ParserTester.scala
diff --git a/src/main/scala/epic/parser/ProductChartFactory.scala b/modules/core/src/main/scala/epic/parser/ProductChartFactory.scala
similarity index 100%
rename from src/main/scala/epic/parser/ProductChartFactory.scala
rename to modules/core/src/main/scala/epic/parser/ProductChartFactory.scala
diff --git a/src/main/scala/epic/parser/ProductGrammarAnchoring.scala b/modules/core/src/main/scala/epic/parser/ProductGrammarAnchoring.scala
similarity index 100%
rename from src/main/scala/epic/parser/ProductGrammarAnchoring.scala
rename to modules/core/src/main/scala/epic/parser/ProductGrammarAnchoring.scala
diff --git a/src/main/scala/epic/parser/ProductRefinedFeaturizer.scala b/modules/core/src/main/scala/epic/parser/ProductRefinedFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/parser/ProductRefinedFeaturizer.scala
rename to modules/core/src/main/scala/epic/parser/ProductRefinedFeaturizer.scala
diff --git a/src/main/scala/epic/parser/ProductUnrefinedGrammarAnchoring.scala b/modules/core/src/main/scala/epic/parser/ProductUnrefinedGrammarAnchoring.scala
similarity index 100%
rename from src/main/scala/epic/parser/ProductUnrefinedGrammarAnchoring.scala
rename to modules/core/src/main/scala/epic/parser/ProductUnrefinedGrammarAnchoring.scala
diff --git a/src/main/scala/epic/parser/ProductionFeaturizer.scala b/modules/core/src/main/scala/epic/parser/ProductionFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/parser/ProductionFeaturizer.scala
rename to modules/core/src/main/scala/epic/parser/ProductionFeaturizer.scala
diff --git a/src/main/scala/epic/parser/ProjectionsGrammarAnchoring.scala b/modules/core/src/main/scala/epic/parser/ProjectionsGrammarAnchoring.scala
similarity index 100%
rename from src/main/scala/epic/parser/ProjectionsGrammarAnchoring.scala
rename to modules/core/src/main/scala/epic/parser/ProjectionsGrammarAnchoring.scala
diff --git a/src/main/scala/epic/parser/RefinedChartMarginal.scala b/modules/core/src/main/scala/epic/parser/RefinedChartMarginal.scala
similarity index 100%
rename from src/main/scala/epic/parser/RefinedChartMarginal.scala
rename to modules/core/src/main/scala/epic/parser/RefinedChartMarginal.scala
diff --git a/src/main/scala/epic/parser/RefinedFeaturizer.scala b/modules/core/src/main/scala/epic/parser/RefinedFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/parser/RefinedFeaturizer.scala
rename to modules/core/src/main/scala/epic/parser/RefinedFeaturizer.scala
diff --git a/src/main/scala/epic/parser/RefinedParseChart.scala b/modules/core/src/main/scala/epic/parser/RefinedParseChart.scala
similarity index 100%
rename from src/main/scala/epic/parser/RefinedParseChart.scala
rename to modules/core/src/main/scala/epic/parser/RefinedParseChart.scala
diff --git a/src/main/scala/epic/parser/RuleFeaturizer.scala b/modules/core/src/main/scala/epic/parser/RuleFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/parser/RuleFeaturizer.scala
rename to modules/core/src/main/scala/epic/parser/RuleFeaturizer.scala
diff --git a/src/main/scala/epic/parser/RuleTopology.scala b/modules/core/src/main/scala/epic/parser/RuleTopology.scala
similarity index 100%
rename from src/main/scala/epic/parser/RuleTopology.scala
rename to modules/core/src/main/scala/epic/parser/RuleTopology.scala
diff --git a/src/main/scala/epic/parser/SimpleChartMarginal.scala b/modules/core/src/main/scala/epic/parser/SimpleChartMarginal.scala
similarity index 100%
rename from src/main/scala/epic/parser/SimpleChartMarginal.scala
rename to modules/core/src/main/scala/epic/parser/SimpleChartMarginal.scala
diff --git a/src/main/scala/epic/parser/SimpleGrammar.scala b/modules/core/src/main/scala/epic/parser/SimpleGrammar.scala
similarity index 100%
rename from src/main/scala/epic/parser/SimpleGrammar.scala
rename to modules/core/src/main/scala/epic/parser/SimpleGrammar.scala
diff --git a/src/main/scala/epic/parser/SparseRuleTensor.scala b/modules/core/src/main/scala/epic/parser/SparseRuleTensor.scala
similarity index 100%
rename from src/main/scala/epic/parser/SparseRuleTensor.scala
rename to modules/core/src/main/scala/epic/parser/SparseRuleTensor.scala
diff --git a/src/main/scala/epic/parser/TreeMarginal.scala b/modules/core/src/main/scala/epic/parser/TreeMarginal.scala
similarity index 100%
rename from src/main/scala/epic/parser/TreeMarginal.scala
rename to modules/core/src/main/scala/epic/parser/TreeMarginal.scala
diff --git a/src/main/scala/epic/parser/UnrefinedGrammarAnchoring.scala b/modules/core/src/main/scala/epic/parser/UnrefinedGrammarAnchoring.scala
similarity index 100%
rename from src/main/scala/epic/parser/UnrefinedGrammarAnchoring.scala
rename to modules/core/src/main/scala/epic/parser/UnrefinedGrammarAnchoring.scala
diff --git a/src/main/scala/epic/parser/kbest/AStarKBestParser.scala b/modules/core/src/main/scala/epic/parser/kbest/AStarKBestParser.scala
similarity index 100%
rename from src/main/scala/epic/parser/kbest/AStarKBestParser.scala
rename to modules/core/src/main/scala/epic/parser/kbest/AStarKBestParser.scala
diff --git a/src/main/scala/epic/parser/kbest/KBestListMarginal.scala b/modules/core/src/main/scala/epic/parser/kbest/KBestListMarginal.scala
similarity index 100%
rename from src/main/scala/epic/parser/kbest/KBestListMarginal.scala
rename to modules/core/src/main/scala/epic/parser/kbest/KBestListMarginal.scala
diff --git a/src/main/scala/epic/parser/kbest/KBestParseTreebank.scala b/modules/core/src/main/scala/epic/parser/kbest/KBestParseTreebank.scala
similarity index 100%
rename from src/main/scala/epic/parser/kbest/KBestParseTreebank.scala
rename to modules/core/src/main/scala/epic/parser/kbest/KBestParseTreebank.scala
diff --git a/src/main/scala/epic/parser/kbest/KBestParser.scala b/modules/core/src/main/scala/epic/parser/kbest/KBestParser.scala
similarity index 100%
rename from src/main/scala/epic/parser/kbest/KBestParser.scala
rename to modules/core/src/main/scala/epic/parser/kbest/KBestParser.scala
diff --git a/src/main/scala/epic/parser/kbest/TopDownKBestAStar.scala b/modules/core/src/main/scala/epic/parser/kbest/TopDownKBestAStar.scala
similarity index 100%
rename from src/main/scala/epic/parser/kbest/TopDownKBestAStar.scala
rename to modules/core/src/main/scala/epic/parser/kbest/TopDownKBestAStar.scala
diff --git a/src/main/scala/epic/parser/models/AnnotatedParserInference.scala b/modules/core/src/main/scala/epic/parser/models/AnnotatedParserInference.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/AnnotatedParserInference.scala
rename to modules/core/src/main/scala/epic/parser/models/AnnotatedParserInference.scala
diff --git a/src/main/scala/epic/parser/models/EPParserModelFactory.scala b/modules/core/src/main/scala/epic/parser/models/EPParserModelFactory.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/EPParserModelFactory.scala
rename to modules/core/src/main/scala/epic/parser/models/EPParserModelFactory.scala
diff --git a/src/main/scala/epic/parser/models/EPProjector.scala b/modules/core/src/main/scala/epic/parser/models/EPProjector.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/EPProjector.scala
rename to modules/core/src/main/scala/epic/parser/models/EPProjector.scala
diff --git a/src/main/scala/epic/parser/models/FeaturizedGrammar.scala b/modules/core/src/main/scala/epic/parser/models/FeaturizedGrammar.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/FeaturizedGrammar.scala
rename to modules/core/src/main/scala/epic/parser/models/FeaturizedGrammar.scala
diff --git a/src/main/scala/epic/parser/models/FeaturizedLexicon.scala b/modules/core/src/main/scala/epic/parser/models/FeaturizedLexicon.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/FeaturizedLexicon.scala
rename to modules/core/src/main/scala/epic/parser/models/FeaturizedLexicon.scala
diff --git a/src/main/scala/epic/parser/models/IndexedFeaturizer.scala b/modules/core/src/main/scala/epic/parser/models/IndexedFeaturizer.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/IndexedFeaturizer.scala
rename to modules/core/src/main/scala/epic/parser/models/IndexedFeaturizer.scala
diff --git a/src/main/scala/epic/parser/models/LatentParserModel.scala b/modules/core/src/main/scala/epic/parser/models/LatentParserModel.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/LatentParserModel.scala
rename to modules/core/src/main/scala/epic/parser/models/LatentParserModel.scala
diff --git a/src/main/scala/epic/parser/models/LexModel.scala b/modules/core/src/main/scala/epic/parser/models/LexModel.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/LexModel.scala
rename to modules/core/src/main/scala/epic/parser/models/LexModel.scala
diff --git a/src/main/scala/epic/parser/models/NeuralModel.scala b/modules/core/src/main/scala/epic/parser/models/NeuralModel.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/NeuralModel.scala
rename to modules/core/src/main/scala/epic/parser/models/NeuralModel.scala
diff --git a/src/main/scala/epic/parser/models/NeuralParserTrainer.scala b/modules/core/src/main/scala/epic/parser/models/NeuralParserTrainer.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/NeuralParserTrainer.scala
rename to modules/core/src/main/scala/epic/parser/models/NeuralParserTrainer.scala
diff --git a/src/main/scala/epic/parser/models/ParserExtractable.scala b/modules/core/src/main/scala/epic/parser/models/ParserExtractable.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/ParserExtractable.scala
rename to modules/core/src/main/scala/epic/parser/models/ParserExtractable.scala
diff --git a/src/main/scala/epic/parser/models/ParserModel.scala b/modules/core/src/main/scala/epic/parser/models/ParserModel.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/ParserModel.scala
rename to modules/core/src/main/scala/epic/parser/models/ParserModel.scala
diff --git a/src/main/scala/epic/parser/models/ParserTrainer.scala b/modules/core/src/main/scala/epic/parser/models/ParserTrainer.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/ParserTrainer.scala
rename to modules/core/src/main/scala/epic/parser/models/ParserTrainer.scala
diff --git a/src/main/scala/epic/parser/models/PositionalNeuralModel.scala b/modules/core/src/main/scala/epic/parser/models/PositionalNeuralModel.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/PositionalNeuralModel.scala
rename to modules/core/src/main/scala/epic/parser/models/PositionalNeuralModel.scala
diff --git a/src/main/scala/epic/parser/models/PositionalNeuralModelFactory.scala b/modules/core/src/main/scala/epic/parser/models/PositionalNeuralModelFactory.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/PositionalNeuralModelFactory.scala
rename to modules/core/src/main/scala/epic/parser/models/PositionalNeuralModelFactory.scala
diff --git a/src/main/scala/epic/parser/models/ProductParserModelFactory.scala b/modules/core/src/main/scala/epic/parser/models/ProductParserModelFactory.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/ProductParserModelFactory.scala
rename to modules/core/src/main/scala/epic/parser/models/ProductParserModelFactory.scala
diff --git a/src/main/scala/epic/parser/models/SpanModel.scala b/modules/core/src/main/scala/epic/parser/models/SpanModel.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/SpanModel.scala
rename to modules/core/src/main/scala/epic/parser/models/SpanModel.scala
diff --git a/src/main/scala/epic/parser/models/StructModel.scala b/modules/core/src/main/scala/epic/parser/models/StructModel.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/StructModel.scala
rename to modules/core/src/main/scala/epic/parser/models/StructModel.scala
diff --git a/src/main/scala/epic/parser/models/ThreePointModel.scala b/modules/core/src/main/scala/epic/parser/models/ThreePointModel.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/ThreePointModel.scala
rename to modules/core/src/main/scala/epic/parser/models/ThreePointModel.scala
diff --git a/src/main/scala/epic/parser/models/TransformModel.scala b/modules/core/src/main/scala/epic/parser/models/TransformModel.scala
similarity index 100%
rename from src/main/scala/epic/parser/models/TransformModel.scala
rename to modules/core/src/main/scala/epic/parser/models/TransformModel.scala
diff --git a/src/main/scala/epic/parser/morph/MorphFeat.scala b/modules/core/src/main/scala/epic/parser/morph/MorphFeat.scala
similarity index 100%
rename from src/main/scala/epic/parser/morph/MorphFeat.scala
rename to modules/core/src/main/scala/epic/parser/morph/MorphFeat.scala
diff --git a/src/main/scala/epic/parser/package.scala b/modules/core/src/main/scala/epic/parser/package.scala
similarity index 100%
rename from src/main/scala/epic/parser/package.scala
rename to modules/core/src/main/scala/epic/parser/package.scala
diff --git a/src/main/scala/epic/parser/projections/AnchoredForestProjector.scala b/modules/core/src/main/scala/epic/parser/projections/AnchoredForestProjector.scala
similarity index 100%
rename from src/main/scala/epic/parser/projections/AnchoredForestProjector.scala
rename to modules/core/src/main/scala/epic/parser/projections/AnchoredForestProjector.scala
diff --git a/src/main/scala/epic/parser/projections/AnchoredSpanProjector.scala b/modules/core/src/main/scala/epic/parser/projections/AnchoredSpanProjector.scala
similarity index 100%
rename from src/main/scala/epic/parser/projections/AnchoredSpanProjector.scala
rename to modules/core/src/main/scala/epic/parser/projections/AnchoredSpanProjector.scala
diff --git a/src/main/scala/epic/parser/projections/ChartProjector.scala b/modules/core/src/main/scala/epic/parser/projections/ChartProjector.scala
similarity index 100%
rename from src/main/scala/epic/parser/projections/ChartProjector.scala
rename to modules/core/src/main/scala/epic/parser/projections/ChartProjector.scala
diff --git a/src/main/scala/epic/parser/projections/ConstraintAnchoring.scala b/modules/core/src/main/scala/epic/parser/projections/ConstraintAnchoring.scala
similarity index 100%
rename from src/main/scala/epic/parser/projections/ConstraintAnchoring.scala
rename to modules/core/src/main/scala/epic/parser/projections/ConstraintAnchoring.scala
diff --git a/src/main/scala/epic/parser/projections/EnumeratedAnchoring.scala b/modules/core/src/main/scala/epic/parser/projections/EnumeratedAnchoring.scala
similarity index 100%
rename from src/main/scala/epic/parser/projections/EnumeratedAnchoring.scala
rename to modules/core/src/main/scala/epic/parser/projections/EnumeratedAnchoring.scala
diff --git a/src/main/scala/epic/parser/projections/GoldTagPolicy.scala b/modules/core/src/main/scala/epic/parser/projections/GoldTagPolicy.scala
similarity index 100%
rename from src/main/scala/epic/parser/projections/GoldTagPolicy.scala
rename to modules/core/src/main/scala/epic/parser/projections/GoldTagPolicy.scala
diff --git a/src/main/scala/epic/parser/projections/GrammarRefinements.scala b/modules/core/src/main/scala/epic/parser/projections/GrammarRefinements.scala
similarity index 100%
rename from src/main/scala/epic/parser/projections/GrammarRefinements.scala
rename to modules/core/src/main/scala/epic/parser/projections/GrammarRefinements.scala
diff --git a/src/main/scala/epic/parser/projections/LabeledSpanProjector.scala b/modules/core/src/main/scala/epic/parser/projections/LabeledSpanProjector.scala
similarity index 100%
rename from src/main/scala/epic/parser/projections/LabeledSpanProjector.scala
rename to modules/core/src/main/scala/epic/parser/projections/LabeledSpanProjector.scala
diff --git a/src/main/scala/epic/parser/projections/OracleParser.scala b/modules/core/src/main/scala/epic/parser/projections/OracleParser.scala
similarity index 100%
rename from src/main/scala/epic/parser/projections/OracleParser.scala
rename to modules/core/src/main/scala/epic/parser/projections/OracleParser.scala
diff --git a/src/main/scala/epic/parser/projections/ProjectingCoreGrammar.scala b/modules/core/src/main/scala/epic/parser/projections/ProjectingCoreGrammar.scala
similarity index 100%
rename from src/main/scala/epic/parser/projections/ProjectingCoreGrammar.scala
rename to modules/core/src/main/scala/epic/parser/projections/ProjectingCoreGrammar.scala
diff --git a/src/main/scala/epic/parser/projections/ProjectionIndexer.scala b/modules/core/src/main/scala/epic/parser/projections/ProjectionIndexer.scala
similarity index 100%
rename from src/main/scala/epic/parser/projections/ProjectionIndexer.scala
rename to modules/core/src/main/scala/epic/parser/projections/ProjectionIndexer.scala
diff --git a/src/main/scala/epic/parser/repl/DSLGrammar.scala b/modules/core/src/main/scala/epic/parser/repl/DSLGrammar.scala
similarity index 100%
rename from src/main/scala/epic/parser/repl/DSLGrammar.scala
rename to modules/core/src/main/scala/epic/parser/repl/DSLGrammar.scala
diff --git a/src/main/scala/epic/parser/repl/ReplGrammar.scala b/modules/core/src/main/scala/epic/parser/repl/ReplGrammar.scala
similarity index 100%
rename from src/main/scala/epic/parser/repl/ReplGrammar.scala
rename to modules/core/src/main/scala/epic/parser/repl/ReplGrammar.scala
diff --git a/src/main/scala/epic/preprocess/JavaSentenceSegmenter.scala b/modules/core/src/main/scala/epic/preprocess/JavaSentenceSegmenter.scala
similarity index 100%
rename from src/main/scala/epic/preprocess/JavaSentenceSegmenter.scala
rename to modules/core/src/main/scala/epic/preprocess/JavaSentenceSegmenter.scala
diff --git a/src/main/scala/epic/preprocess/JavaWordTokenizer.scala b/modules/core/src/main/scala/epic/preprocess/JavaWordTokenizer.scala
similarity index 100%
rename from src/main/scala/epic/preprocess/JavaWordTokenizer.scala
rename to modules/core/src/main/scala/epic/preprocess/JavaWordTokenizer.scala
diff --git a/src/main/scala/epic/preprocess/MLSentenceSegmenter.scala b/modules/core/src/main/scala/epic/preprocess/MLSentenceSegmenter.scala
similarity index 100%
rename from src/main/scala/epic/preprocess/MLSentenceSegmenter.scala
rename to modules/core/src/main/scala/epic/preprocess/MLSentenceSegmenter.scala
diff --git a/src/main/scala/epic/preprocess/NewLineSentenceSegmenter.scala b/modules/core/src/main/scala/epic/preprocess/NewLineSentenceSegmenter.scala
similarity index 100%
rename from src/main/scala/epic/preprocess/NewLineSentenceSegmenter.scala
rename to modules/core/src/main/scala/epic/preprocess/NewLineSentenceSegmenter.scala
diff --git a/src/main/scala/epic/preprocess/RegexSearchTokenizer.scala b/modules/core/src/main/scala/epic/preprocess/RegexSearchTokenizer.scala
similarity index 100%
rename from src/main/scala/epic/preprocess/RegexSearchTokenizer.scala
rename to modules/core/src/main/scala/epic/preprocess/RegexSearchTokenizer.scala
diff --git a/src/main/scala/epic/preprocess/RegexSentenceSegmenter.scala b/modules/core/src/main/scala/epic/preprocess/RegexSentenceSegmenter.scala
similarity index 100%
rename from src/main/scala/epic/preprocess/RegexSentenceSegmenter.scala
rename to modules/core/src/main/scala/epic/preprocess/RegexSentenceSegmenter.scala
diff --git a/src/main/scala/epic/preprocess/RegexSplitTokenizer.scala b/modules/core/src/main/scala/epic/preprocess/RegexSplitTokenizer.scala
similarity index 100%
rename from src/main/scala/epic/preprocess/RegexSplitTokenizer.scala
rename to modules/core/src/main/scala/epic/preprocess/RegexSplitTokenizer.scala
diff --git a/src/main/scala/epic/preprocess/SentenceSegmenter.scala b/modules/core/src/main/scala/epic/preprocess/SentenceSegmenter.scala
similarity index 100%
rename from src/main/scala/epic/preprocess/SentenceSegmenter.scala
rename to modules/core/src/main/scala/epic/preprocess/SentenceSegmenter.scala
diff --git a/src/main/scala/epic/preprocess/StreamSentenceSegmenter.scala b/modules/core/src/main/scala/epic/preprocess/StreamSentenceSegmenter.scala
similarity index 100%
rename from src/main/scala/epic/preprocess/StreamSentenceSegmenter.scala
rename to modules/core/src/main/scala/epic/preprocess/StreamSentenceSegmenter.scala
diff --git a/src/main/scala/epic/preprocess/Tokenizer.scala b/modules/core/src/main/scala/epic/preprocess/Tokenizer.scala
similarity index 100%
rename from src/main/scala/epic/preprocess/Tokenizer.scala
rename to modules/core/src/main/scala/epic/preprocess/Tokenizer.scala
diff --git a/src/main/scala/epic/preprocess/TreebankTokenizer.scala b/modules/core/src/main/scala/epic/preprocess/TreebankTokenizer.scala
similarity index 100%
rename from src/main/scala/epic/preprocess/TreebankTokenizer.scala
rename to modules/core/src/main/scala/epic/preprocess/TreebankTokenizer.scala
diff --git a/src/main/scala/epic/preprocess/WhitespaceTokenizer.scala b/modules/core/src/main/scala/epic/preprocess/WhitespaceTokenizer.scala
similarity index 100%
rename from src/main/scala/epic/preprocess/WhitespaceTokenizer.scala
rename to modules/core/src/main/scala/epic/preprocess/WhitespaceTokenizer.scala
diff --git a/src/main/scala/epic/sentiment/SentimentEvaluator.scala b/modules/core/src/main/scala/epic/sentiment/SentimentEvaluator.scala
similarity index 100%
rename from src/main/scala/epic/sentiment/SentimentEvaluator.scala
rename to modules/core/src/main/scala/epic/sentiment/SentimentEvaluator.scala
diff --git a/src/main/scala/epic/sentiment/SentimentLossAugmentation.scala b/modules/core/src/main/scala/epic/sentiment/SentimentLossAugmentation.scala
similarity index 100%
rename from src/main/scala/epic/sentiment/SentimentLossAugmentation.scala
rename to modules/core/src/main/scala/epic/sentiment/SentimentLossAugmentation.scala
diff --git a/src/main/scala/epic/sentiment/SentimentTreebankPipeline.scala b/modules/core/src/main/scala/epic/sentiment/SentimentTreebankPipeline.scala
similarity index 100%
rename from src/main/scala/epic/sentiment/SentimentTreebankPipeline.scala
rename to modules/core/src/main/scala/epic/sentiment/SentimentTreebankPipeline.scala
diff --git a/src/main/scala/epic/sequences/BIOETag.scala b/modules/core/src/main/scala/epic/sequences/BIOETag.scala
similarity index 100%
rename from src/main/scala/epic/sequences/BIOETag.scala
rename to modules/core/src/main/scala/epic/sequences/BIOETag.scala
diff --git a/src/main/scala/epic/sequences/CRF.scala b/modules/core/src/main/scala/epic/sequences/CRF.scala
similarity index 100%
rename from src/main/scala/epic/sequences/CRF.scala
rename to modules/core/src/main/scala/epic/sequences/CRF.scala
diff --git a/src/main/scala/epic/sequences/CRFModel.scala b/modules/core/src/main/scala/epic/sequences/CRFModel.scala
similarity index 100%
rename from src/main/scala/epic/sequences/CRFModel.scala
rename to modules/core/src/main/scala/epic/sequences/CRFModel.scala
diff --git a/src/main/scala/epic/sequences/Gazetteer.scala b/modules/core/src/main/scala/epic/sequences/Gazetteer.scala
similarity index 100%
rename from src/main/scala/epic/sequences/Gazetteer.scala
rename to modules/core/src/main/scala/epic/sequences/Gazetteer.scala
diff --git a/src/main/scala/epic/sequences/GoldSegmentPolicy.scala b/modules/core/src/main/scala/epic/sequences/GoldSegmentPolicy.scala
similarity index 100%
rename from src/main/scala/epic/sequences/GoldSegmentPolicy.scala
rename to modules/core/src/main/scala/epic/sequences/GoldSegmentPolicy.scala
diff --git a/src/main/scala/epic/sequences/HMM.scala b/modules/core/src/main/scala/epic/sequences/HMM.scala
similarity index 100%
rename from src/main/scala/epic/sequences/HMM.scala
rename to modules/core/src/main/scala/epic/sequences/HMM.scala
diff --git a/src/main/scala/epic/sequences/HammingLossAugmentation.scala b/modules/core/src/main/scala/epic/sequences/HammingLossAugmentation.scala
similarity index 100%
rename from src/main/scala/epic/sequences/HammingLossAugmentation.scala
rename to modules/core/src/main/scala/epic/sequences/HammingLossAugmentation.scala
diff --git a/src/main/scala/epic/sequences/SegmentText.scala b/modules/core/src/main/scala/epic/sequences/SegmentText.scala
similarity index 100%
rename from src/main/scala/epic/sequences/SegmentText.scala
rename to modules/core/src/main/scala/epic/sequences/SegmentText.scala
diff --git a/src/main/scala/epic/sequences/Segmentation.scala b/modules/core/src/main/scala/epic/sequences/Segmentation.scala
similarity index 100%
rename from src/main/scala/epic/sequences/Segmentation.scala
rename to modules/core/src/main/scala/epic/sequences/Segmentation.scala
diff --git a/src/main/scala/epic/sequences/SegmentationEval.scala b/modules/core/src/main/scala/epic/sequences/SegmentationEval.scala
similarity index 100%
rename from src/main/scala/epic/sequences/SegmentationEval.scala
rename to modules/core/src/main/scala/epic/sequences/SegmentationEval.scala
diff --git a/src/main/scala/epic/sequences/Segmenter.scala b/modules/core/src/main/scala/epic/sequences/Segmenter.scala
similarity index 100%
rename from src/main/scala/epic/sequences/Segmenter.scala
rename to modules/core/src/main/scala/epic/sequences/Segmenter.scala
diff --git a/src/main/scala/epic/sequences/SemiCRF.scala b/modules/core/src/main/scala/epic/sequences/SemiCRF.scala
similarity index 100%
rename from src/main/scala/epic/sequences/SemiCRF.scala
rename to modules/core/src/main/scala/epic/sequences/SemiCRF.scala
diff --git a/src/main/scala/epic/sequences/SemiCRFModel.scala b/modules/core/src/main/scala/epic/sequences/SemiCRFModel.scala
similarity index 100%
rename from src/main/scala/epic/sequences/SemiCRFModel.scala
rename to modules/core/src/main/scala/epic/sequences/SemiCRFModel.scala
diff --git a/src/main/scala/epic/sequences/SemiNERPipeline.scala b/modules/core/src/main/scala/epic/sequences/SemiNERPipeline.scala
similarity index 100%
rename from src/main/scala/epic/sequences/SemiNERPipeline.scala
rename to modules/core/src/main/scala/epic/sequences/SemiNERPipeline.scala
diff --git a/src/main/scala/epic/sequences/TagText.scala b/modules/core/src/main/scala/epic/sequences/TagText.scala
similarity index 100%
rename from src/main/scala/epic/sequences/TagText.scala
rename to modules/core/src/main/scala/epic/sequences/TagText.scala
diff --git a/src/main/scala/epic/sequences/TaggedSequence.scala b/modules/core/src/main/scala/epic/sequences/TaggedSequence.scala
similarity index 100%
rename from src/main/scala/epic/sequences/TaggedSequence.scala
rename to modules/core/src/main/scala/epic/sequences/TaggedSequence.scala
diff --git a/src/main/scala/epic/sequences/TaggedSequenceEval.scala b/modules/core/src/main/scala/epic/sequences/TaggedSequenceEval.scala
similarity index 100%
rename from src/main/scala/epic/sequences/TaggedSequenceEval.scala
rename to modules/core/src/main/scala/epic/sequences/TaggedSequenceEval.scala
diff --git a/src/main/scala/epic/sequences/Tagger.scala b/modules/core/src/main/scala/epic/sequences/Tagger.scala
similarity index 100%
rename from src/main/scala/epic/sequences/Tagger.scala
rename to modules/core/src/main/scala/epic/sequences/Tagger.scala
diff --git a/src/main/scala/epic/sequences/TrainPosTagger.scala b/modules/core/src/main/scala/epic/sequences/TrainPosTagger.scala
similarity index 100%
rename from src/main/scala/epic/sequences/TrainPosTagger.scala
rename to modules/core/src/main/scala/epic/sequences/TrainPosTagger.scala
diff --git a/src/main/scala/epic/slab/AnalysisFunction.scala b/modules/core/src/main/scala/epic/slab/AnalysisFunction.scala
similarity index 100%
rename from src/main/scala/epic/slab/AnalysisFunction.scala
rename to modules/core/src/main/scala/epic/slab/AnalysisFunction.scala
diff --git a/src/main/scala/epic/slab/Slab.scala b/modules/core/src/main/scala/epic/slab/Slab.scala
similarity index 100%
rename from src/main/scala/epic/slab/Slab.scala
rename to modules/core/src/main/scala/epic/slab/Slab.scala
diff --git a/src/main/scala/epic/slab/package.scala b/modules/core/src/main/scala/epic/slab/package.scala
similarity index 100%
rename from src/main/scala/epic/slab/package.scala
rename to modules/core/src/main/scala/epic/slab/package.scala
diff --git a/src/main/scala/epic/trees/AnnotatedLabel.scala b/modules/core/src/main/scala/epic/trees/AnnotatedLabel.scala
similarity index 100%
rename from src/main/scala/epic/trees/AnnotatedLabel.scala
rename to modules/core/src/main/scala/epic/trees/AnnotatedLabel.scala
diff --git a/src/main/scala/epic/trees/Debinarizer.scala b/modules/core/src/main/scala/epic/trees/Debinarizer.scala
similarity index 100%
rename from src/main/scala/epic/trees/Debinarizer.scala
rename to modules/core/src/main/scala/epic/trees/Debinarizer.scala
diff --git a/src/main/scala/epic/trees/DependencyTree.scala b/modules/core/src/main/scala/epic/trees/DependencyTree.scala
similarity index 100%
rename from src/main/scala/epic/trees/DependencyTree.scala
rename to modules/core/src/main/scala/epic/trees/DependencyTree.scala
diff --git a/src/main/scala/epic/trees/HeadFinder.scala b/modules/core/src/main/scala/epic/trees/HeadFinder.scala
similarity index 100%
rename from src/main/scala/epic/trees/HeadFinder.scala
rename to modules/core/src/main/scala/epic/trees/HeadFinder.scala
diff --git a/src/main/scala/epic/trees/PartialTreeProcessor.scala b/modules/core/src/main/scala/epic/trees/PartialTreeProcessor.scala
similarity index 100%
rename from src/main/scala/epic/trees/PartialTreeProcessor.scala
rename to modules/core/src/main/scala/epic/trees/PartialTreeProcessor.scala
diff --git a/src/main/scala/epic/trees/PennTreeReader.scala b/modules/core/src/main/scala/epic/trees/PennTreeReader.scala
similarity index 100%
rename from src/main/scala/epic/trees/PennTreeReader.scala
rename to modules/core/src/main/scala/epic/trees/PennTreeReader.scala
diff --git a/src/main/scala/epic/trees/ProcessedTreebank.scala b/modules/core/src/main/scala/epic/trees/ProcessedTreebank.scala
similarity index 100%
rename from src/main/scala/epic/trees/ProcessedTreebank.scala
rename to modules/core/src/main/scala/epic/trees/ProcessedTreebank.scala
diff --git a/src/main/scala/epic/trees/Rule.scala b/modules/core/src/main/scala/epic/trees/Rule.scala
similarity index 100%
rename from src/main/scala/epic/trees/Rule.scala
rename to modules/core/src/main/scala/epic/trees/Rule.scala
diff --git a/src/main/scala/epic/trees/SimpleTreebank.scala b/modules/core/src/main/scala/epic/trees/SimpleTreebank.scala
similarity index 100%
rename from src/main/scala/epic/trees/SimpleTreebank.scala
rename to modules/core/src/main/scala/epic/trees/SimpleTreebank.scala
diff --git a/src/main/scala/epic/trees/Span.scala b/modules/core/src/main/scala/epic/trees/Span.scala
similarity index 100%
rename from src/main/scala/epic/trees/Span.scala
rename to modules/core/src/main/scala/epic/trees/Span.scala
diff --git a/src/main/scala/epic/trees/StandardTreeProcessor.scala b/modules/core/src/main/scala/epic/trees/StandardTreeProcessor.scala
similarity index 100%
rename from src/main/scala/epic/trees/StandardTreeProcessor.scala
rename to modules/core/src/main/scala/epic/trees/StandardTreeProcessor.scala
diff --git a/src/main/scala/epic/trees/SubsampledTreebank.scala b/modules/core/src/main/scala/epic/trees/SubsampledTreebank.scala
similarity index 100%
rename from src/main/scala/epic/trees/SubsampledTreebank.scala
rename to modules/core/src/main/scala/epic/trees/SubsampledTreebank.scala
diff --git a/src/main/scala/epic/trees/SupervisedHeadFinder.scala b/modules/core/src/main/scala/epic/trees/SupervisedHeadFinder.scala
similarity index 100%
rename from src/main/scala/epic/trees/SupervisedHeadFinder.scala
rename to modules/core/src/main/scala/epic/trees/SupervisedHeadFinder.scala
diff --git a/src/main/scala/epic/trees/TestTreebank.scala b/modules/core/src/main/scala/epic/trees/TestTreebank.scala
similarity index 100%
rename from src/main/scala/epic/trees/TestTreebank.scala
rename to modules/core/src/main/scala/epic/trees/TestTreebank.scala
diff --git a/src/main/scala/epic/trees/TraceRemover.scala b/modules/core/src/main/scala/epic/trees/TraceRemover.scala
similarity index 100%
rename from src/main/scala/epic/trees/TraceRemover.scala
rename to modules/core/src/main/scala/epic/trees/TraceRemover.scala
diff --git a/src/main/scala/epic/trees/TraceToSlashCategoryConverter.scala b/modules/core/src/main/scala/epic/trees/TraceToSlashCategoryConverter.scala
similarity index 100%
rename from src/main/scala/epic/trees/TraceToSlashCategoryConverter.scala
rename to modules/core/src/main/scala/epic/trees/TraceToSlashCategoryConverter.scala
diff --git a/src/main/scala/epic/trees/Tree.scala b/modules/core/src/main/scala/epic/trees/Tree.scala
similarity index 100%
rename from src/main/scala/epic/trees/Tree.scala
rename to modules/core/src/main/scala/epic/trees/Tree.scala
diff --git a/src/main/scala/epic/trees/TreeInstance.scala b/modules/core/src/main/scala/epic/trees/TreeInstance.scala
similarity index 100%
rename from src/main/scala/epic/trees/TreeInstance.scala
rename to modules/core/src/main/scala/epic/trees/TreeInstance.scala
diff --git a/src/main/scala/epic/trees/Treebank.scala b/modules/core/src/main/scala/epic/trees/Treebank.scala
similarity index 100%
rename from src/main/scala/epic/trees/Treebank.scala
rename to modules/core/src/main/scala/epic/trees/Treebank.scala
diff --git a/src/main/scala/epic/trees/UnaryChainCollapser.scala b/modules/core/src/main/scala/epic/trees/UnaryChainCollapser.scala
similarity index 100%
rename from src/main/scala/epic/trees/UnaryChainCollapser.scala
rename to modules/core/src/main/scala/epic/trees/UnaryChainCollapser.scala
diff --git a/src/main/scala/epic/trees/annotations/HeadTagAnnotator.scala b/modules/core/src/main/scala/epic/trees/annotations/HeadTagAnnotator.scala
similarity index 100%
rename from src/main/scala/epic/trees/annotations/HeadTagAnnotator.scala
rename to modules/core/src/main/scala/epic/trees/annotations/HeadTagAnnotator.scala
diff --git a/src/main/scala/epic/trees/annotations/KMAnnotator.scala b/modules/core/src/main/scala/epic/trees/annotations/KMAnnotator.scala
similarity index 100%
rename from src/main/scala/epic/trees/annotations/KMAnnotator.scala
rename to modules/core/src/main/scala/epic/trees/annotations/KMAnnotator.scala
diff --git a/src/main/scala/epic/trees/annotations/TreeAnnotations.scala b/modules/core/src/main/scala/epic/trees/annotations/TreeAnnotations.scala
similarity index 100%
rename from src/main/scala/epic/trees/annotations/TreeAnnotations.scala
rename to modules/core/src/main/scala/epic/trees/annotations/TreeAnnotations.scala
diff --git a/src/main/scala/epic/trees/annotations/TreeAnnotator.scala b/modules/core/src/main/scala/epic/trees/annotations/TreeAnnotator.scala
similarity index 100%
rename from src/main/scala/epic/trees/annotations/TreeAnnotator.scala
rename to modules/core/src/main/scala/epic/trees/annotations/TreeAnnotator.scala
diff --git a/src/main/scala/epic/trees/util/FilterTreesByLength.scala b/modules/core/src/main/scala/epic/trees/util/FilterTreesByLength.scala
similarity index 100%
rename from src/main/scala/epic/trees/util/FilterTreesByLength.scala
rename to modules/core/src/main/scala/epic/trees/util/FilterTreesByLength.scala
diff --git a/src/main/scala/epic/util/ArabicNormalization.scala b/modules/core/src/main/scala/epic/util/ArabicNormalization.scala
similarity index 100%
rename from src/main/scala/epic/util/ArabicNormalization.scala
rename to modules/core/src/main/scala/epic/util/ArabicNormalization.scala
diff --git a/src/main/scala/epic/util/BinarySearch.scala b/modules/core/src/main/scala/epic/util/BinarySearch.scala
similarity index 100%
rename from src/main/scala/epic/util/BinarySearch.scala
rename to modules/core/src/main/scala/epic/util/BinarySearch.scala
diff --git a/src/main/scala/epic/util/Cache.scala b/modules/core/src/main/scala/epic/util/Cache.scala
similarity index 100%
rename from src/main/scala/epic/util/Cache.scala
rename to modules/core/src/main/scala/epic/util/Cache.scala
diff --git a/src/main/scala/epic/util/FIFOWorkQueue.scala b/modules/core/src/main/scala/epic/util/FIFOWorkQueue.scala
similarity index 100%
rename from src/main/scala/epic/util/FIFOWorkQueue.scala
rename to modules/core/src/main/scala/epic/util/FIFOWorkQueue.scala
diff --git a/src/main/scala/epic/util/Has.scala b/modules/core/src/main/scala/epic/util/Has.scala
similarity index 100%
rename from src/main/scala/epic/util/Has.scala
rename to modules/core/src/main/scala/epic/util/Has.scala
diff --git a/src/main/scala/epic/util/LRUCache.scala b/modules/core/src/main/scala/epic/util/LRUCache.scala
similarity index 100%
rename from src/main/scala/epic/util/LRUCache.scala
rename to modules/core/src/main/scala/epic/util/LRUCache.scala
diff --git a/src/main/scala/epic/util/LockableSeenSet.scala b/modules/core/src/main/scala/epic/util/LockableSeenSet.scala
similarity index 100%
rename from src/main/scala/epic/util/LockableSeenSet.scala
rename to modules/core/src/main/scala/epic/util/LockableSeenSet.scala
diff --git a/src/main/scala/epic/util/Optional.scala b/modules/core/src/main/scala/epic/util/Optional.scala
similarity index 100%
rename from src/main/scala/epic/util/Optional.scala
rename to modules/core/src/main/scala/epic/util/Optional.scala
diff --git a/src/main/scala/epic/util/ProcessTextMain.scala b/modules/core/src/main/scala/epic/util/ProcessTextMain.scala
similarity index 100%
rename from src/main/scala/epic/util/ProcessTextMain.scala
rename to modules/core/src/main/scala/epic/util/ProcessTextMain.scala
diff --git a/src/main/scala/epic/util/ProgressLog.scala b/modules/core/src/main/scala/epic/util/ProgressLog.scala
similarity index 100%
rename from src/main/scala/epic/util/ProgressLog.scala
rename to modules/core/src/main/scala/epic/util/ProgressLog.scala
diff --git a/src/main/scala/epic/util/ThreadLocalBloomFilter.scala b/modules/core/src/main/scala/epic/util/ThreadLocalBloomFilter.scala
similarity index 100%
rename from src/main/scala/epic/util/ThreadLocalBloomFilter.scala
rename to modules/core/src/main/scala/epic/util/ThreadLocalBloomFilter.scala
diff --git a/src/main/scala/epic/util/TwoTwelveSupport.scala b/modules/core/src/main/scala/epic/util/TwoTwelveSupport.scala
similarity index 100%
rename from src/main/scala/epic/util/TwoTwelveSupport.scala
rename to modules/core/src/main/scala/epic/util/TwoTwelveSupport.scala
diff --git a/src/main/scala/epic/util/Unicode.scala b/modules/core/src/main/scala/epic/util/Unicode.scala
similarity index 100%
rename from src/main/scala/epic/util/Unicode.scala
rename to modules/core/src/main/scala/epic/util/Unicode.scala
diff --git a/src/main/scala/epic/util/WeightsCache.scala b/modules/core/src/main/scala/epic/util/WeightsCache.scala
similarity index 100%
rename from src/main/scala/epic/util/WeightsCache.scala
rename to modules/core/src/main/scala/epic/util/WeightsCache.scala
diff --git a/src/test/resources/lang/eng/stem/stemmed_vocabulary.txt b/modules/core/src/test/resources/lang/eng/stem/stemmed_vocabulary.txt
similarity index 100%
rename from src/test/resources/lang/eng/stem/stemmed_vocabulary.txt
rename to modules/core/src/test/resources/lang/eng/stem/stemmed_vocabulary.txt
diff --git a/src/test/resources/lang/eng/stem/vocabulary.txt b/modules/core/src/test/resources/lang/eng/stem/vocabulary.txt
similarity index 100%
rename from src/test/resources/lang/eng/stem/vocabulary.txt
rename to modules/core/src/test/resources/lang/eng/stem/vocabulary.txt
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-cb.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-cb.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-cb.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-cb.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-event.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-event.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-event.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-event.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-fn.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-fn.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-fn.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-fn.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-fntok.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-fntok.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-fntok.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-fntok.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-logical.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-logical.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-logical.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-logical.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-mpqa.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-mpqa.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-mpqa.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-mpqa.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-nc.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-nc.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-nc.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-nc.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-ne.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-ne.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-ne.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-ne.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-penn.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-penn.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-penn.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-penn.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-ptb.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-ptb.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-ptb.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-ptb.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-ptbtok.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-ptbtok.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-ptbtok.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-ptbtok.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-s.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-s.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-s.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-s.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-seg.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-seg.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-seg.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-seg.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-vc.xml b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-vc.xml
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-vc.xml
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW-vc.xml
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW.hdr b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW.hdr
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW.hdr
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW.hdr
diff --git a/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW.txt b/modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW.txt
similarity index 100%
rename from src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW.txt
rename to modules/core/src/test/resources/masc/data/written/newspaper/nyt/20000424_nyt-NEW.txt
diff --git a/src/test/scala/epic/constraints/LabeledSpanConstraintsTest.scala b/modules/core/src/test/scala/epic/constraints/LabeledSpanConstraintsTest.scala
similarity index 100%
rename from src/test/scala/epic/constraints/LabeledSpanConstraintsTest.scala
rename to modules/core/src/test/scala/epic/constraints/LabeledSpanConstraintsTest.scala
diff --git a/src/test/scala/epic/corpora/MascTest.scala b/modules/core/src/test/scala/epic/corpora/MascTest.scala
similarity index 100%
rename from src/test/scala/epic/corpora/MascTest.scala
rename to modules/core/src/test/scala/epic/corpora/MascTest.scala
diff --git a/src/test/scala/epic/dense/AffineTransformTest.scala b/modules/core/src/test/scala/epic/dense/AffineTransformTest.scala
similarity index 100%
rename from src/test/scala/epic/dense/AffineTransformTest.scala
rename to modules/core/src/test/scala/epic/dense/AffineTransformTest.scala
diff --git a/src/test/scala/epic/dense/SigmoidTransformTest.scala b/modules/core/src/test/scala/epic/dense/SigmoidTransformTest.scala
similarity index 100%
rename from src/test/scala/epic/dense/SigmoidTransformTest.scala
rename to modules/core/src/test/scala/epic/dense/SigmoidTransformTest.scala
diff --git a/src/test/scala/epic/dense/TanhTransformTest.scala b/modules/core/src/test/scala/epic/dense/TanhTransformTest.scala
similarity index 100%
rename from src/test/scala/epic/dense/TanhTransformTest.scala
rename to modules/core/src/test/scala/epic/dense/TanhTransformTest.scala
diff --git a/src/test/scala/epic/features/CrossProductIndexTest.scala b/modules/core/src/test/scala/epic/features/CrossProductIndexTest.scala
similarity index 100%
rename from src/test/scala/epic/features/CrossProductIndexTest.scala
rename to modules/core/src/test/scala/epic/features/CrossProductIndexTest.scala
diff --git a/src/test/scala/epic/features/DistanceBinnerTest.scala b/modules/core/src/test/scala/epic/features/DistanceBinnerTest.scala
similarity index 100%
rename from src/test/scala/epic/features/DistanceBinnerTest.scala
rename to modules/core/src/test/scala/epic/features/DistanceBinnerTest.scala
diff --git a/src/test/scala/epic/features/NextActualWordFeaturizerTest.scala b/modules/core/src/test/scala/epic/features/NextActualWordFeaturizerTest.scala
similarity index 100%
rename from src/test/scala/epic/features/NextActualWordFeaturizerTest.scala
rename to modules/core/src/test/scala/epic/features/NextActualWordFeaturizerTest.scala
diff --git a/src/test/scala/epic/features/PorterStemmerTest.scala b/modules/core/src/test/scala/epic/features/PorterStemmerTest.scala
similarity index 100%
rename from src/test/scala/epic/features/PorterStemmerTest.scala
rename to modules/core/src/test/scala/epic/features/PorterStemmerTest.scala
diff --git a/src/test/scala/epic/features/packageTest.scala b/modules/core/src/test/scala/epic/features/packageTest.scala
similarity index 100%
rename from src/test/scala/epic/features/packageTest.scala
rename to modules/core/src/test/scala/epic/features/packageTest.scala
diff --git a/src/test/scala/epic/logo/ClassifierTest.scala b/modules/core/src/test/scala/epic/logo/ClassifierTest.scala
similarity index 100%
rename from src/test/scala/epic/logo/ClassifierTest.scala
rename to modules/core/src/test/scala/epic/logo/ClassifierTest.scala
diff --git a/src/test/scala/epic/parser/ChartDecoderTest.scala b/modules/core/src/test/scala/epic/parser/ChartDecoderTest.scala
similarity index 100%
rename from src/test/scala/epic/parser/ChartDecoderTest.scala
rename to modules/core/src/test/scala/epic/parser/ChartDecoderTest.scala
diff --git a/src/test/scala/epic/parser/GenerativeParserTest.scala b/modules/core/src/test/scala/epic/parser/GenerativeParserTest.scala
similarity index 100%
rename from src/test/scala/epic/parser/GenerativeParserTest.scala
rename to modules/core/src/test/scala/epic/parser/GenerativeParserTest.scala
diff --git a/src/test/scala/epic/parser/InsideOutsideTest.scala b/modules/core/src/test/scala/epic/parser/InsideOutsideTest.scala
similarity index 100%
rename from src/test/scala/epic/parser/InsideOutsideTest.scala
rename to modules/core/src/test/scala/epic/parser/InsideOutsideTest.scala
diff --git a/src/test/scala/epic/parser/LatentTreeMarginalTest.scala b/modules/core/src/test/scala/epic/parser/LatentTreeMarginalTest.scala
similarity index 100%
rename from src/test/scala/epic/parser/LatentTreeMarginalTest.scala
rename to modules/core/src/test/scala/epic/parser/LatentTreeMarginalTest.scala
diff --git a/src/test/scala/epic/parser/ParserTestHarness.scala b/modules/core/src/test/scala/epic/parser/ParserTestHarness.scala
similarity index 100%
rename from src/test/scala/epic/parser/ParserTestHarness.scala
rename to modules/core/src/test/scala/epic/parser/ParserTestHarness.scala
diff --git a/src/test/scala/epic/parser/SparseRuleTensorTest.scala b/modules/core/src/test/scala/epic/parser/SparseRuleTensorTest.scala
similarity index 100%
rename from src/test/scala/epic/parser/SparseRuleTensorTest.scala
rename to modules/core/src/test/scala/epic/parser/SparseRuleTensorTest.scala
diff --git a/src/test/scala/epic/parser/kbest/TopDownKBestAStarTest.scala b/modules/core/src/test/scala/epic/parser/kbest/TopDownKBestAStarTest.scala
similarity index 100%
rename from src/test/scala/epic/parser/kbest/TopDownKBestAStarTest.scala
rename to modules/core/src/test/scala/epic/parser/kbest/TopDownKBestAStarTest.scala
diff --git a/src/test/scala/epic/parser/models/EPParserTest.scala b/modules/core/src/test/scala/epic/parser/models/EPParserTest.scala
similarity index 100%
rename from src/test/scala/epic/parser/models/EPParserTest.scala
rename to modules/core/src/test/scala/epic/parser/models/EPParserTest.scala
diff --git a/src/test/scala/epic/parser/models/ProductParserTest.scala b/modules/core/src/test/scala/epic/parser/models/ProductParserTest.scala
similarity index 100%
rename from src/test/scala/epic/parser/models/ProductParserTest.scala
rename to modules/core/src/test/scala/epic/parser/models/ProductParserTest.scala
diff --git a/src/test/scala/epic/parser/projections/EnumeratedAnchoringTest.scala b/modules/core/src/test/scala/epic/parser/projections/EnumeratedAnchoringTest.scala
similarity index 100%
rename from src/test/scala/epic/parser/projections/EnumeratedAnchoringTest.scala
rename to modules/core/src/test/scala/epic/parser/projections/EnumeratedAnchoringTest.scala
diff --git a/src/test/scala/epic/parser/projections/SpanAnchoringTest.scala b/modules/core/src/test/scala/epic/parser/projections/SpanAnchoringTest.scala
similarity index 100%
rename from src/test/scala/epic/parser/projections/SpanAnchoringTest.scala
rename to modules/core/src/test/scala/epic/parser/projections/SpanAnchoringTest.scala
diff --git a/src/test/scala/epic/preprocess/JavaSentenceSegmenterTest.scala b/modules/core/src/test/scala/epic/preprocess/JavaSentenceSegmenterTest.scala
similarity index 100%
rename from src/test/scala/epic/preprocess/JavaSentenceSegmenterTest.scala
rename to modules/core/src/test/scala/epic/preprocess/JavaSentenceSegmenterTest.scala
diff --git a/src/test/scala/epic/preprocess/JavaWordTokenizerTest.scala b/modules/core/src/test/scala/epic/preprocess/JavaWordTokenizerTest.scala
similarity index 100%
rename from src/test/scala/epic/preprocess/JavaWordTokenizerTest.scala
rename to modules/core/src/test/scala/epic/preprocess/JavaWordTokenizerTest.scala
diff --git a/src/test/scala/epic/preprocess/MLSentenceSegmenterTest.scala b/modules/core/src/test/scala/epic/preprocess/MLSentenceSegmenterTest.scala
similarity index 100%
rename from src/test/scala/epic/preprocess/MLSentenceSegmenterTest.scala
rename to modules/core/src/test/scala/epic/preprocess/MLSentenceSegmenterTest.scala
diff --git a/src/test/scala/epic/preprocess/TreebankTokenizerTest.scala b/modules/core/src/test/scala/epic/preprocess/TreebankTokenizerTest.scala
similarity index 100%
rename from src/test/scala/epic/preprocess/TreebankTokenizerTest.scala
rename to modules/core/src/test/scala/epic/preprocess/TreebankTokenizerTest.scala
diff --git a/src/test/scala/epic/sequences/HMMTest.scala b/modules/core/src/test/scala/epic/sequences/HMMTest.scala
similarity index 100%
rename from src/test/scala/epic/sequences/HMMTest.scala
rename to modules/core/src/test/scala/epic/sequences/HMMTest.scala
diff --git a/src/test/scala/epic/sequences/SegmentationTest.scala b/modules/core/src/test/scala/epic/sequences/SegmentationTest.scala
similarity index 100%
rename from src/test/scala/epic/sequences/SegmentationTest.scala
rename to modules/core/src/test/scala/epic/sequences/SegmentationTest.scala
diff --git a/src/test/scala/epic/sequences/SemiCRFTest.scala b/modules/core/src/test/scala/epic/sequences/SemiCRFTest.scala
similarity index 100%
rename from src/test/scala/epic/sequences/SemiCRFTest.scala
rename to modules/core/src/test/scala/epic/sequences/SemiCRFTest.scala
diff --git a/src/test/scala/epic/slab/SlabTest.scala b/modules/core/src/test/scala/epic/slab/SlabTest.scala
similarity index 100%
rename from src/test/scala/epic/slab/SlabTest.scala
rename to modules/core/src/test/scala/epic/slab/SlabTest.scala
diff --git a/src/test/scala/epic/trees/PennTreeReaderTest.scala b/modules/core/src/test/scala/epic/trees/PennTreeReaderTest.scala
similarity index 100%
rename from src/test/scala/epic/trees/PennTreeReaderTest.scala
rename to modules/core/src/test/scala/epic/trees/PennTreeReaderTest.scala
diff --git a/src/test/scala/epic/trees/TraceRemoverTest.scala b/modules/core/src/test/scala/epic/trees/TraceRemoverTest.scala
similarity index 100%
rename from src/test/scala/epic/trees/TraceRemoverTest.scala
rename to modules/core/src/test/scala/epic/trees/TraceRemoverTest.scala
diff --git a/src/test/scala/epic/trees/TraceToSlashCategoryConverterTest.scala b/modules/core/src/test/scala/epic/trees/TraceToSlashCategoryConverterTest.scala
similarity index 100%
rename from src/test/scala/epic/trees/TraceToSlashCategoryConverterTest.scala
rename to modules/core/src/test/scala/epic/trees/TraceToSlashCategoryConverterTest.scala
diff --git a/src/test/scala/epic/trees/TreeTest.scala b/modules/core/src/test/scala/epic/trees/TreeTest.scala
similarity index 100%
rename from src/test/scala/epic/trees/TreeTest.scala
rename to modules/core/src/test/scala/epic/trees/TreeTest.scala
diff --git a/src/test/scala/epic/trees/annotations/KMAnnotatorTest.scala b/modules/core/src/test/scala/epic/trees/annotations/KMAnnotatorTest.scala
similarity index 100%
rename from src/test/scala/epic/trees/annotations/KMAnnotatorTest.scala
rename to modules/core/src/test/scala/epic/trees/annotations/KMAnnotatorTest.scala
diff --git a/src/test/scala/epic/trees/annotations/ParentAnnotateTest.scala b/modules/core/src/test/scala/epic/trees/annotations/ParentAnnotateTest.scala
similarity index 100%
rename from src/test/scala/epic/trees/annotations/ParentAnnotateTest.scala
rename to modules/core/src/test/scala/epic/trees/annotations/ParentAnnotateTest.scala
diff --git a/src/test/scala/epic/util/BinarySearchTest.scala b/modules/core/src/test/scala/epic/util/BinarySearchTest.scala
similarity index 100%
rename from src/test/scala/epic/util/BinarySearchTest.scala
rename to modules/core/src/test/scala/epic/util/BinarySearchTest.scala
diff --git a/src/test/scala/epic/util/FIFOWorkQueueTest.scala b/modules/core/src/test/scala/epic/util/FIFOWorkQueueTest.scala
similarity index 100%
rename from src/test/scala/epic/util/FIFOWorkQueueTest.scala
rename to modules/core/src/test/scala/epic/util/FIFOWorkQueueTest.scala
diff --git a/src/test/scala/epic/util/LRUCacheTest.scala b/modules/core/src/test/scala/epic/util/LRUCacheTest.scala
similarity index 100%
rename from src/test/scala/epic/util/LRUCacheTest.scala
rename to modules/core/src/test/scala/epic/util/LRUCacheTest.scala
diff --git a/src/main/scala/epic/preprocess/TextExtractor.scala b/modules/html/src/main/scala/epic/preprocess/TextExtractor.scala
similarity index 95%
rename from src/main/scala/epic/preprocess/TextExtractor.scala
rename to modules/html/src/main/scala/epic/preprocess/TextExtractor.scala
index f399be49..e5537945 100644
--- a/src/main/scala/epic/preprocess/TextExtractor.scala
+++ b/modules/html/src/main/scala/epic/preprocess/TextExtractor.scala
@@ -1,5 +1,4 @@
-package epic
-package preprocess
+package epic.preprocess
import java.io.InputStream
import java.net.URL
@@ -11,19 +10,19 @@ import org.apache.tika.Tika
import org.apache.tika.io.TikaInputStream
import org.apache.tika.metadata.Metadata
import org.apache.tika.parser.html.BoilerpipeContentHandler
-import org.apache.tika.parser.{ParseContext, Parser}
+import org.apache.tika.parser.{ ParseContext, Parser }
import org.apache.tika.sax.ToTextContentHandler
import org.xml.sax._
+import scala.xml._
+import scala.xml.factory.XMLLoader
+
/**
* Just a simple thing for me to learn Tika
*
* @author dlwh
**/
object TextExtractor {
- if (!hasTika)
- throw new RuntimeException("Apache Tika is an optional dependency and is not on the classpath")
-
def extractText(url: URL, extractMainContentOnly: Boolean = true) = loadSlab(url, extractMainContentOnly).content
def loadSlab(url: URL, extractMainContentOnly: Boolean = true) = {
@@ -213,9 +212,6 @@ object TextExtractor {
import org.xml.sax._
import org.xml.sax.helpers.DefaultHandler
-import scala.xml._
- import scala.xml.factory.XMLLoader
-
class Loader extends DefaultHandler with XMLLoader[Elem] {
val newAdapter = adapter
def value = newAdapter.rootElem.asInstanceOf[Elem]
@@ -247,15 +243,4 @@ import scala.xml._
characters(ch, start, length)
}
}
-
- def hasTika = {
- try {
- Class.forName(classOf[Tika].getName)
- true
- }
- catch {
- case _: Any => false
- }
- }
-
}
diff --git a/src/main/scala/epic/preprocess/Textify.scala b/modules/html/src/main/scala/epic/preprocess/Textify.scala
similarity index 91%
rename from src/main/scala/epic/preprocess/Textify.scala
rename to modules/html/src/main/scala/epic/preprocess/Textify.scala
index 40702ca2..b3f6e7b7 100644
--- a/src/main/scala/epic/preprocess/Textify.scala
+++ b/modules/html/src/main/scala/epic/preprocess/Textify.scala
@@ -1,6 +1,6 @@
package epic.preprocess
-import java.io.{PrintWriter, FileWriter, File}
+import java.io.{ File, FileWriter, PrintWriter }
/**
* TODO
@@ -25,5 +25,4 @@ object Textify {
oo.close()
}
}
-
}
diff --git a/src/main/scala/epic/preprocess/package.scala b/modules/html/src/main/scala/epic/preprocess/preprocess.scala
similarity index 93%
rename from src/main/scala/epic/preprocess/package.scala
rename to modules/html/src/main/scala/epic/preprocess/preprocess.scala
index da3ac3f3..6252fe98 100644
--- a/src/main/scala/epic/preprocess/package.scala
+++ b/modules/html/src/main/scala/epic/preprocess/preprocess.scala
@@ -3,16 +3,11 @@ package epic
import java.io.File
import java.net.URL
-/**
- * TODO
- *
- * @author dlwh
- **/
package object preprocess {
def tokenize(sentence: String): IndexedSeq[String] = TreebankTokenizer(sentence)
def loadContent(url: URL): String = TextExtractor.extractText(url)
-
+
def preprocess(url: URL):IndexedSeq[IndexedSeq[String]] = {
preprocess(loadContent(url))
}
@@ -26,5 +21,4 @@ package object preprocess {
}
private lazy val _seg = MLSentenceSegmenter.bundled().get
-
}
diff --git a/project/build.properties b/project/build.properties
index a6e117b6..72f90289 100644
--- a/project/build.properties
+++ b/project/build.properties
@@ -1 +1 @@
-sbt.version=0.13.8
+sbt.version=1.2.7
diff --git a/project/plugins.sbt b/project/plugins.sbt
index 647dda76..994e2b5a 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -7,14 +7,16 @@
resolvers += Classpaths.sbtPluginReleases
resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)
-addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.13.0")
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.10")
-addSbtPlugin("org.scalanlp" % "sbt-jflex" % "0.3")
+addSbtPlugin("org.scalanlp" % "sbt-jflex" % "0.4")
-addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
+// addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
-addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.7.5")
+addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.9.2")
+
+// addSbtPlugin("com.typesafe.sbt" % "sbt-osgi" % "0.7.0")
+
+addSbtPlugin("com.typesafe.sbt" % "sbt-git" % "0.9.3")
-addSbtPlugin("com.typesafe.sbt" % "sbt-osgi" % "0.7.0")
-addSbtPlugin("com.typesafe.sbt" % "sbt-git" % "0.8.5")
diff --git a/src/main/resources/epic/.DS_Store b/src/main/resources/epic/.DS_Store
deleted file mode 100644
index fa32f13d..00000000
Binary files a/src/main/resources/epic/.DS_Store and /dev/null differ
diff --git a/src/main/resources/epic/features/.DS_Store b/src/main/resources/epic/features/.DS_Store
deleted file mode 100644
index 36c76a91..00000000
Binary files a/src/main/resources/epic/features/.DS_Store and /dev/null differ