diff --git a/.gitignore b/.gitignore
index 15736d7..4bc09b2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,11 +5,12 @@ out
 .attach*
 *.log
 *.so
+*.dylib
 slinc/src/io/gitlab/mhammons/slinc/test.worksheet.sc
 *.bench
 .bsp
 .scala-build
 .DS_Store
 
-metals.sbt 
+metals.sbt
 target
diff --git a/build.sbt b/build.sbt
index 5e5d5a9..22e4c03 100644
--- a/build.sbt
+++ b/build.sbt
@@ -33,26 +33,82 @@ inThisBuild(
   )
 )
 
-scalacOptions ++= Seq(
-  "-deprecation",
-  "-Wunused:all",
-  "-feature",
-  "-unchecked",
-  "-Xcheck-macros",
-  "-Xprint-suspension",
-  "-Xsemanticdb",
-  "-Yexplicit-nulls",
-  "-Ysafe-init",
-  "-source:future",
-  "-Ykind-projector",
-  "-Vprofile"
-)
+lazy val slinc = project
+  .in(file("slinc"))
+  .settings(
+    name := "slinc",
+    scalacOptions ++= Seq(
+      "-deprecation",
+      "-Wunused:all",
+      "-feature",
+      "-unchecked",
+      "-Xcheck-macros",
+      "-Xprint-suspension",
+      "-Xsemanticdb",
+      "-Yexplicit-nulls",
+      "-Ysafe-init",
+      "-source:future",
+      "-Ykind-projector",
+      "-Vprofile"
+    ),
+    libraryDependencies += "org.scalameta" %% "munit" % "1.0.0-M10" % Test,
+    libraryDependencies += "org.scalameta" %% "munit-scalacheck" % "1.0.0-M10" % Test,
+    libraryDependencies += "org.scala-lang" %% "scala3-staging" % scalaVersion.value,
+    Compile / doc / scalacOptions ++= Seq("-siteroot", "docs"),
+    mimaPreviousArtifacts := previousStableVersion.value
+      .map(organization.value %% moduleName.value % _)
+      .toSet
+  )
 
-libraryDependencies += "org.scalameta" %% "munit" % "1.0.0-M10" % Test
-libraryDependencies += "org.scalameta" %% "munit-scalacheck" % "1.0.0-M10" % Test
-libraryDependencies += "org.scala-lang" %% "scala3-staging" % scalaVersion.value
+lazy val copyNative = TaskKey[Set[File]]("copy shared lib")
 
-Compile / doc / scalacOptions ++= Seq("-siteroot", "docs")
-mimaPreviousArtifacts := previousStableVersion.value
-  .map(organization.value %% moduleName.value % _)
-  .toSet
+lazy val examples = project
+  .in(file("slinc-examples"))
+  .dependsOn(slinc)
+  .settings(
+    publishTo := None,
+    publishLocal := Def.task(()),
+    copyNative := {
+      val nativeSrc = (`examples-native` / Compile / nativeCompile).value
+      // rename shared lib name so that it complies with SlinC convention(`{lib name}_{arch}.{ext}`).
+      val destName = {
+        val arch =
+          (`examples-native` / nativePlatform).value.takeWhile(_ != '-')
+        val (base, ext) = nativeSrc.baseAndExt
+        s"${base}_${arch}.${ext}"
+      }
+      val nativeDest =
+        (Compile / resourceDirectory).value / "native" / destName
+      IO.copy(Seq(nativeSrc -> nativeDest))
+    },
+    Compile / resourceGenerators += Def.task {
+      copyNative.value.toSeq
+    }.taskValue,
+    run / fork := true,
+    javaOptions ++= Seq(
+      "--add-modules=jdk.incubator.foreign",
+      "--enable-native-access=ALL-UNNAMED"
+    ),
+    libraryDependencies += "fr.hammons" %% "slinc-runtime" % "0.6.0"
+  )
+  .dependsOn(`examples-native`)
+
+/*
+ * A project to build native shared library
+ */
+lazy val `examples-native` = project
+  .in(file("slinc-examples-native"))
+  .enablePlugins(JniNative)
+  .settings(
+    publishTo := None,
+    publishLocal := Def.task(()),
+    nativeCompile / sourceDirectory := sourceDirectory.value
+  )
+
+lazy val root = project
+  .in(file("."))
+  .aggregate(slinc, examples, `examples-native`)
+  .settings(
+    publishTo := None,
+    publishLocal := Def.task(())
+  )
diff --git a/project/plugins.sbt b/project/plugins.sbt
index c138792..9b4e287 100644
--- a/project/plugins.sbt
+++ b/project/plugins.sbt
@@ -3,3 +3,4 @@ addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.5")
 addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.5.12")
 addSbtPlugin("ch.epfl.scala" % "sbt-tasty-mima" % "1.1.0")
 addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.1.3")
+addSbtPlugin("com.github.sbt" % "sbt-jni" % "1.6.0")
diff --git a/slinc-examples-native/src/CMakeLists.txt b/slinc-examples-native/src/CMakeLists.txt
new file mode 100644
index 0000000..430a5d8
--- /dev/null
+++ b/slinc-examples-native/src/CMakeLists.txt
@@ -0,0 +1,24 @@
+cmake_minimum_required(VERSION 3.1)
+
+option(SBT "Set if invoked from sbt-jni" OFF)
+
+project(add)
+
+set(PROJECT_VERSION_MAJOR 0)
+set(PROJECT_VERSION_MINOR 0)
+set(PROJECT_VERSION_PATCH 0)
+
+include_directories(.)
+include_directories(include)
+add_library(add MODULE add.c)
+
+# Sources
+file(GLOB LIB_SRC
+  "*.c"
+  "*.cc"
+  "*.cpp"
+)
+
+set (LIB_NAME ${PROJECT_NAME}${PROJECT_VERSION_MAJOR})
+add_library(${LIB_NAME} SHARED ${LIB_SRC})
+install(TARGETS ${LIB_NAME} LIBRARY DESTINATION .)
diff --git a/slinc-examples-native/src/add.c b/slinc-examples-native/src/add.c
new file mode 100644
index 0000000..f39aa20
--- /dev/null
+++ b/slinc-examples-native/src/add.c
@@ -0,0 +1,19 @@
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+int add(int a,int b) {
+    return a + b;
+}
+
+int add_by_callback(int a, int (*f)(void)) {
+    int b = f();
+    return a + b;
+}
+
+char* add_str(char* a, char* b) {
+    int size = strlen(a) + strlen(b) + 1;
+    char *buf = malloc (size);
+    snprintf(buf, size, "%s%s", a, b);
+    return buf;
+}
diff --git a/slinc-examples/src/main/scala/fr/hammons/slinc/CallSharedLib.scala b/slinc-examples/src/main/scala/fr/hammons/slinc/CallSharedLib.scala
new file mode 100644
index 0000000..efb13b9
--- /dev/null
+++ b/slinc-examples/src/main/scala/fr/hammons/slinc/CallSharedLib.scala
@@ -0,0 +1,28 @@
+import fr.hammons.slinc.runtime.given
+import fr.hammons.slinc.types.*
+import fr.hammons.slinc.*
+
+import fr.hammons.slinc.annotations.NeedsResource
+
+@NeedsResource("libadd0")
+trait libadd derives FSet:
+  def add(a: CInt, b: CInt): CInt
+  def add_by_callback(a: CInt, f: Ptr[?]): CInt
+  def add_str(a: Ptr[Byte], f: Ptr[Byte]): Ptr[Byte]
+
+@main def run =
+  val libadd = FSet.instance[libadd]
+  assert(libadd.add(21, 21) == 42)
+
+  val callback = Scope.global:
+    Ptr.upcall(() => 21)
+  assert(libadd.add_by_callback(21, callback) == 42)
+
+  val (hello, world) = ("Hello", "World")
+  val (a, b) = Scope.global:
+    (Ptr.copy(hello), Ptr.copy(world))
+
+  val c = libadd.add_str(a, b)
+  val result =
+    Ptr.copyIntoString(c)(hello.getBytes().length + world.getBytes().length + 1)
+  assert(result == hello + world)
diff --git a/slinc-examples/src/main/scala/fr/hammons/slinc/CallStdLib.scala b/slinc-examples/src/main/scala/fr/hammons/slinc/CallStdLib.scala
new file mode 100644
index 0000000..c3d0de1
--- /dev/null
+++ b/slinc-examples/src/main/scala/fr/hammons/slinc/CallStdLib.scala
@@ -0,0 +1,13 @@
+import fr.hammons.slinc.runtime.given
+import fr.hammons.slinc.types.*
+import fr.hammons.slinc.*
+
+case class div_t(quot: CInt, rem: CInt) derives Struct
+
+trait MyLib derives FSet:
+  def div(numer: CInt, denom: CInt): div_t
+val myLib = FSet.instance[MyLib]
+
+@main def calc =
+  val div_t(quot, rem) = myLib.div(5, 2)
+  assert((quot, rem) == (2, 1), s"Unexpected (quot, rem): ($quot, $rem)")
diff --git a/src/main/scala/fr/hammons/slinc/Alias.scala b/slinc/src/main/scala/fr/hammons/slinc/Alias.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/Alias.scala
rename to slinc/src/main/scala/fr/hammons/slinc/Alias.scala
diff --git a/src/main/scala/fr/hammons/slinc/Allocator.scala b/slinc/src/main/scala/fr/hammons/slinc/Allocator.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/Allocator.scala
rename to slinc/src/main/scala/fr/hammons/slinc/Allocator.scala
diff --git a/src/main/scala/fr/hammons/slinc/Bytes.scala b/slinc/src/main/scala/fr/hammons/slinc/Bytes.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/Bytes.scala
rename to slinc/src/main/scala/fr/hammons/slinc/Bytes.scala
diff --git a/src/main/scala/fr/hammons/slinc/CFunctionDescriptor.scala b/slinc/src/main/scala/fr/hammons/slinc/CFunctionDescriptor.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/CFunctionDescriptor.scala
rename to slinc/src/main/scala/fr/hammons/slinc/CFunctionDescriptor.scala
diff --git a/src/main/scala/fr/hammons/slinc/CUnion.scala b/slinc/src/main/scala/fr/hammons/slinc/CUnion.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/CUnion.scala
rename to slinc/src/main/scala/fr/hammons/slinc/CUnion.scala
diff --git a/src/main/scala/fr/hammons/slinc/DescriptorOf.scala b/slinc/src/main/scala/fr/hammons/slinc/DescriptorOf.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/DescriptorOf.scala
rename to slinc/src/main/scala/fr/hammons/slinc/DescriptorOf.scala
diff --git a/src/main/scala/fr/hammons/slinc/FSet.scala b/slinc/src/main/scala/fr/hammons/slinc/FSet.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/FSet.scala
rename to slinc/src/main/scala/fr/hammons/slinc/FSet.scala
diff --git a/src/main/scala/fr/hammons/slinc/FunctionBindingGenerator.scala b/slinc/src/main/scala/fr/hammons/slinc/FunctionBindingGenerator.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/FunctionBindingGenerator.scala
rename to slinc/src/main/scala/fr/hammons/slinc/FunctionBindingGenerator.scala
diff --git a/src/main/scala/fr/hammons/slinc/FunctionContext.scala b/slinc/src/main/scala/fr/hammons/slinc/FunctionContext.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/FunctionContext.scala
rename to slinc/src/main/scala/fr/hammons/slinc/FunctionContext.scala
diff --git a/src/main/scala/fr/hammons/slinc/FunctionDescriptor.scala b/slinc/src/main/scala/fr/hammons/slinc/FunctionDescriptor.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/FunctionDescriptor.scala
rename to slinc/src/main/scala/fr/hammons/slinc/FunctionDescriptor.scala
diff --git a/src/main/scala/fr/hammons/slinc/InlineHelpers.scala b/slinc/src/main/scala/fr/hammons/slinc/InlineHelpers.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/InlineHelpers.scala
rename to slinc/src/main/scala/fr/hammons/slinc/InlineHelpers.scala
diff --git a/src/main/scala/fr/hammons/slinc/MacroHelpers.scala b/slinc/src/main/scala/fr/hammons/slinc/MacroHelpers.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/MacroHelpers.scala
rename to slinc/src/main/scala/fr/hammons/slinc/MacroHelpers.scala
diff --git a/src/main/scala/fr/hammons/slinc/Mem.scala b/slinc/src/main/scala/fr/hammons/slinc/Mem.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/Mem.scala
rename to slinc/src/main/scala/fr/hammons/slinc/Mem.scala
diff --git a/src/main/scala/fr/hammons/slinc/MethodCompatible.scala b/slinc/src/main/scala/fr/hammons/slinc/MethodCompatible.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/MethodCompatible.scala
rename to slinc/src/main/scala/fr/hammons/slinc/MethodCompatible.scala
diff --git a/src/main/scala/fr/hammons/slinc/MethodHandleFacade.java b/slinc/src/main/scala/fr/hammons/slinc/MethodHandleFacade.java
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/MethodHandleFacade.java
rename to slinc/src/main/scala/fr/hammons/slinc/MethodHandleFacade.java
diff --git a/src/main/scala/fr/hammons/slinc/MethodHandleTools.scala b/slinc/src/main/scala/fr/hammons/slinc/MethodHandleTools.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/MethodHandleTools.scala
rename to slinc/src/main/scala/fr/hammons/slinc/MethodHandleTools.scala
diff --git a/src/main/scala/fr/hammons/slinc/MethodHandler.scala b/slinc/src/main/scala/fr/hammons/slinc/MethodHandler.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/MethodHandler.scala
rename to slinc/src/main/scala/fr/hammons/slinc/MethodHandler.scala
diff --git a/src/main/scala/fr/hammons/slinc/Ptr.scala b/slinc/src/main/scala/fr/hammons/slinc/Ptr.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/Ptr.scala
rename to slinc/src/main/scala/fr/hammons/slinc/Ptr.scala
diff --git a/src/main/scala/fr/hammons/slinc/Scope.scala b/slinc/src/main/scala/fr/hammons/slinc/Scope.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/Scope.scala
rename to slinc/src/main/scala/fr/hammons/slinc/Scope.scala
diff --git a/src/main/scala/fr/hammons/slinc/SetSizeArray.scala b/slinc/src/main/scala/fr/hammons/slinc/SetSizeArray.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/SetSizeArray.scala
rename to slinc/src/main/scala/fr/hammons/slinc/SetSizeArray.scala
diff --git a/src/main/scala/fr/hammons/slinc/Slinc.scala b/slinc/src/main/scala/fr/hammons/slinc/Slinc.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/Slinc.scala
rename to slinc/src/main/scala/fr/hammons/slinc/Slinc.scala
diff --git a/src/main/scala/fr/hammons/slinc/SlincImpl.scala b/slinc/src/main/scala/fr/hammons/slinc/SlincImpl.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/SlincImpl.scala
rename to slinc/src/main/scala/fr/hammons/slinc/SlincImpl.scala
diff --git a/src/main/scala/fr/hammons/slinc/Struct.scala b/slinc/src/main/scala/fr/hammons/slinc/Struct.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/Struct.scala
rename to slinc/src/main/scala/fr/hammons/slinc/Struct.scala
diff --git a/src/main/scala/fr/hammons/slinc/Transform.scala b/slinc/src/main/scala/fr/hammons/slinc/Transform.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/Transform.scala
rename to slinc/src/main/scala/fr/hammons/slinc/Transform.scala
diff --git a/src/main/scala/fr/hammons/slinc/TypeDescriptor.scala b/slinc/src/main/scala/fr/hammons/slinc/TypeDescriptor.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/TypeDescriptor.scala
rename to slinc/src/main/scala/fr/hammons/slinc/TypeDescriptor.scala
diff --git a/src/main/scala/fr/hammons/slinc/VarArgs.scala b/slinc/src/main/scala/fr/hammons/slinc/VarArgs.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/VarArgs.scala
rename to slinc/src/main/scala/fr/hammons/slinc/VarArgs.scala
diff --git a/src/main/scala/fr/hammons/slinc/VarArgsBuilder.scala b/slinc/src/main/scala/fr/hammons/slinc/VarArgsBuilder.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/VarArgsBuilder.scala
rename to slinc/src/main/scala/fr/hammons/slinc/VarArgsBuilder.scala
diff --git a/src/main/scala/fr/hammons/slinc/Variadic.scala b/slinc/src/main/scala/fr/hammons/slinc/Variadic.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/Variadic.scala
rename to slinc/src/main/scala/fr/hammons/slinc/Variadic.scala
diff --git a/src/main/scala/fr/hammons/slinc/VoidHelper.java b/slinc/src/main/scala/fr/hammons/slinc/VoidHelper.java
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/VoidHelper.java
rename to slinc/src/main/scala/fr/hammons/slinc/VoidHelper.java
diff --git a/src/main/scala/fr/hammons/slinc/annotations/DependencyAnnotation.scala b/slinc/src/main/scala/fr/hammons/slinc/annotations/DependencyAnnotation.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/annotations/DependencyAnnotation.scala
rename to slinc/src/main/scala/fr/hammons/slinc/annotations/DependencyAnnotation.scala
diff --git a/src/main/scala/fr/hammons/slinc/annotations/NameOverride.scala b/slinc/src/main/scala/fr/hammons/slinc/annotations/NameOverride.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/annotations/NameOverride.scala
rename to slinc/src/main/scala/fr/hammons/slinc/annotations/NameOverride.scala
diff --git a/src/main/scala/fr/hammons/slinc/annotations/Needs.scala b/slinc/src/main/scala/fr/hammons/slinc/annotations/Needs.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/annotations/Needs.scala
rename to slinc/src/main/scala/fr/hammons/slinc/annotations/Needs.scala
diff --git a/src/main/scala/fr/hammons/slinc/annotations/NeedsFile.scala b/slinc/src/main/scala/fr/hammons/slinc/annotations/NeedsFile.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/annotations/NeedsFile.scala
rename to slinc/src/main/scala/fr/hammons/slinc/annotations/NeedsFile.scala
diff --git a/src/main/scala/fr/hammons/slinc/annotations/NeedsResource.scala b/slinc/src/main/scala/fr/hammons/slinc/annotations/NeedsResource.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/annotations/NeedsResource.scala
rename to slinc/src/main/scala/fr/hammons/slinc/annotations/NeedsResource.scala
diff --git a/src/main/scala/fr/hammons/slinc/container/Capabilities.scala b/slinc/src/main/scala/fr/hammons/slinc/container/Capabilities.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/container/Capabilities.scala
rename to slinc/src/main/scala/fr/hammons/slinc/container/Capabilities.scala
diff --git a/src/main/scala/fr/hammons/slinc/container/Container.scala b/slinc/src/main/scala/fr/hammons/slinc/container/Container.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/container/Container.scala
rename to slinc/src/main/scala/fr/hammons/slinc/container/Container.scala
diff --git a/src/main/scala/fr/hammons/slinc/container/ContextProof.scala b/slinc/src/main/scala/fr/hammons/slinc/container/ContextProof.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/container/ContextProof.scala
rename to slinc/src/main/scala/fr/hammons/slinc/container/ContextProof.scala
diff --git a/src/main/scala/fr/hammons/slinc/container/ContextSet.scala b/slinc/src/main/scala/fr/hammons/slinc/container/ContextSet.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/container/ContextSet.scala
rename to slinc/src/main/scala/fr/hammons/slinc/container/ContextSet.scala
diff --git a/src/main/scala/fr/hammons/slinc/container/LocationInCap.scala b/slinc/src/main/scala/fr/hammons/slinc/container/LocationInCap.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/container/LocationInCap.scala
rename to slinc/src/main/scala/fr/hammons/slinc/container/LocationInCap.scala
diff --git a/src/main/scala/fr/hammons/slinc/descriptors/TypeDescriptor.scala b/slinc/src/main/scala/fr/hammons/slinc/descriptors/TypeDescriptor.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/descriptors/TypeDescriptor.scala
rename to slinc/src/main/scala/fr/hammons/slinc/descriptors/TypeDescriptor.scala
diff --git a/src/main/scala/fr/hammons/slinc/fnutils/Fn.scala b/slinc/src/main/scala/fr/hammons/slinc/fnutils/Fn.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/fnutils/Fn.scala
rename to slinc/src/main/scala/fr/hammons/slinc/fnutils/Fn.scala
diff --git a/src/main/scala/fr/hammons/slinc/fnutils/NativeFn.scala b/slinc/src/main/scala/fr/hammons/slinc/fnutils/NativeFn.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/fnutils/NativeFn.scala
rename to slinc/src/main/scala/fr/hammons/slinc/fnutils/NativeFn.scala
diff --git a/src/main/scala/fr/hammons/slinc/fset/Dependency.scala b/slinc/src/main/scala/fr/hammons/slinc/fset/Dependency.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/fset/Dependency.scala
rename to slinc/src/main/scala/fr/hammons/slinc/fset/Dependency.scala
diff --git a/src/main/scala/fr/hammons/slinc/fset/FSetBacking.scala b/slinc/src/main/scala/fr/hammons/slinc/fset/FSetBacking.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/fset/FSetBacking.scala
rename to slinc/src/main/scala/fr/hammons/slinc/fset/FSetBacking.scala
diff --git a/src/main/scala/fr/hammons/slinc/jitc/Intrumentation.scala b/slinc/src/main/scala/fr/hammons/slinc/jitc/Intrumentation.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/jitc/Intrumentation.scala
rename to slinc/src/main/scala/fr/hammons/slinc/jitc/Intrumentation.scala
diff --git a/src/main/scala/fr/hammons/slinc/jitc/JitCService.scala b/slinc/src/main/scala/fr/hammons/slinc/jitc/JitCService.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/jitc/JitCService.scala
rename to slinc/src/main/scala/fr/hammons/slinc/jitc/JitCService.scala
diff --git a/src/main/scala/fr/hammons/slinc/jitc/OptimizableFn.scala b/slinc/src/main/scala/fr/hammons/slinc/jitc/OptimizableFn.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/jitc/OptimizableFn.scala
rename to slinc/src/main/scala/fr/hammons/slinc/jitc/OptimizableFn.scala
diff --git a/src/main/scala/fr/hammons/slinc/modules/CacheFile.scala b/slinc/src/main/scala/fr/hammons/slinc/modules/CacheFile.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/modules/CacheFile.scala
rename to slinc/src/main/scala/fr/hammons/slinc/modules/CacheFile.scala
diff --git a/src/main/scala/fr/hammons/slinc/modules/DependentTrieMap.scala b/slinc/src/main/scala/fr/hammons/slinc/modules/DependentTrieMap.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/modules/DependentTrieMap.scala
rename to slinc/src/main/scala/fr/hammons/slinc/modules/DependentTrieMap.scala
diff --git a/src/main/scala/fr/hammons/slinc/modules/DescriptorModule.scala b/slinc/src/main/scala/fr/hammons/slinc/modules/DescriptorModule.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/modules/DescriptorModule.scala
rename to slinc/src/main/scala/fr/hammons/slinc/modules/DescriptorModule.scala
diff --git a/src/main/scala/fr/hammons/slinc/modules/FSetModule.scala b/slinc/src/main/scala/fr/hammons/slinc/modules/FSetModule.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/modules/FSetModule.scala
rename to slinc/src/main/scala/fr/hammons/slinc/modules/FSetModule.scala
diff --git a/src/main/scala/fr/hammons/slinc/modules/LinkageModule.scala b/slinc/src/main/scala/fr/hammons/slinc/modules/LinkageModule.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/modules/LinkageModule.scala
rename to slinc/src/main/scala/fr/hammons/slinc/modules/LinkageModule.scala
diff --git a/src/main/scala/fr/hammons/slinc/modules/LinkageTools.scala b/slinc/src/main/scala/fr/hammons/slinc/modules/LinkageTools.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/modules/LinkageTools.scala
rename to slinc/src/main/scala/fr/hammons/slinc/modules/LinkageTools.scala
diff --git a/src/main/scala/fr/hammons/slinc/modules/ReadWriteModule.scala b/slinc/src/main/scala/fr/hammons/slinc/modules/ReadWriteModule.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/modules/ReadWriteModule.scala
rename to slinc/src/main/scala/fr/hammons/slinc/modules/ReadWriteModule.scala
diff --git a/src/main/scala/fr/hammons/slinc/modules/TransitionModule.scala b/slinc/src/main/scala/fr/hammons/slinc/modules/TransitionModule.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/modules/TransitionModule.scala
rename to slinc/src/main/scala/fr/hammons/slinc/modules/TransitionModule.scala
diff --git a/src/main/scala/fr/hammons/slinc/types/Arch.scala b/slinc/src/main/scala/fr/hammons/slinc/types/Arch.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/types/Arch.scala
rename to slinc/src/main/scala/fr/hammons/slinc/types/Arch.scala
diff --git a/src/main/scala/fr/hammons/slinc/types/Basic.scala b/slinc/src/main/scala/fr/hammons/slinc/types/Basic.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/types/Basic.scala
rename to slinc/src/main/scala/fr/hammons/slinc/types/Basic.scala
diff --git a/src/main/scala/fr/hammons/slinc/types/CLong.scala b/slinc/src/main/scala/fr/hammons/slinc/types/CLong.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/types/CLong.scala
rename to slinc/src/main/scala/fr/hammons/slinc/types/CLong.scala
diff --git a/src/main/scala/fr/hammons/slinc/types/HostDependentTypes.scala b/slinc/src/main/scala/fr/hammons/slinc/types/HostDependentTypes.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/types/HostDependentTypes.scala
rename to slinc/src/main/scala/fr/hammons/slinc/types/HostDependentTypes.scala
diff --git a/src/main/scala/fr/hammons/slinc/types/IntegralAlias.scala b/slinc/src/main/scala/fr/hammons/slinc/types/IntegralAlias.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/types/IntegralAlias.scala
rename to slinc/src/main/scala/fr/hammons/slinc/types/IntegralAlias.scala
diff --git a/src/main/scala/fr/hammons/slinc/types/OS.scala b/slinc/src/main/scala/fr/hammons/slinc/types/OS.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/types/OS.scala
rename to slinc/src/main/scala/fr/hammons/slinc/types/OS.scala
diff --git a/src/main/scala/fr/hammons/slinc/types/SizeT.scala b/slinc/src/main/scala/fr/hammons/slinc/types/SizeT.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/types/SizeT.scala
rename to slinc/src/main/scala/fr/hammons/slinc/types/SizeT.scala
diff --git a/src/main/scala/fr/hammons/slinc/types/TimeT.scala b/slinc/src/main/scala/fr/hammons/slinc/types/TimeT.scala
similarity index 100%
rename from src/main/scala/fr/hammons/slinc/types/TimeT.scala
rename to slinc/src/main/scala/fr/hammons/slinc/types/TimeT.scala
diff --git a/src/test/resources/native/test.c b/slinc/src/test/resources/native/test.c
similarity index 100%
rename from src/test/resources/native/test.c
rename to slinc/src/test/resources/native/test.c
diff --git a/src/test/scala/fr/hammons/slinc/BindingSpec.scala b/slinc/src/test/scala/fr/hammons/slinc/BindingSpec.scala
similarity index 100%
rename from src/test/scala/fr/hammons/slinc/BindingSpec.scala
rename to slinc/src/test/scala/fr/hammons/slinc/BindingSpec.scala
diff --git a/src/test/scala/fr/hammons/slinc/FSetRuntimeSpec.scala b/slinc/src/test/scala/fr/hammons/slinc/FSetRuntimeSpec.scala
similarity index 100%
rename from src/test/scala/fr/hammons/slinc/FSetRuntimeSpec.scala
rename to slinc/src/test/scala/fr/hammons/slinc/FSetRuntimeSpec.scala
diff --git a/src/test/scala/fr/hammons/slinc/FSetSpec.scala b/slinc/src/test/scala/fr/hammons/slinc/FSetSpec.scala
similarity index 100%
rename from src/test/scala/fr/hammons/slinc/FSetSpec.scala
rename to slinc/src/test/scala/fr/hammons/slinc/FSetSpec.scala
diff --git a/src/test/scala/fr/hammons/slinc/SetSizeArraySpec.scala b/slinc/src/test/scala/fr/hammons/slinc/SetSizeArraySpec.scala
similarity index 100%
rename from src/test/scala/fr/hammons/slinc/SetSizeArraySpec.scala
rename to slinc/src/test/scala/fr/hammons/slinc/SetSizeArraySpec.scala
diff --git a/src/test/scala/fr/hammons/slinc/StdlibSpec.scala b/slinc/src/test/scala/fr/hammons/slinc/StdlibSpec.scala
similarity index 100%
rename from src/test/scala/fr/hammons/slinc/StdlibSpec.scala
rename to slinc/src/test/scala/fr/hammons/slinc/StdlibSpec.scala
diff --git a/src/test/scala/fr/hammons/slinc/TransferSpec.scala b/slinc/src/test/scala/fr/hammons/slinc/TransferSpec.scala
similarity index 100%
rename from src/test/scala/fr/hammons/slinc/TransferSpec.scala
rename to slinc/src/test/scala/fr/hammons/slinc/TransferSpec.scala
diff --git a/src/test/scala/fr/hammons/slinc/TypeDescriptorSpec.scala b/slinc/src/test/scala/fr/hammons/slinc/TypeDescriptorSpec.scala
similarity index 100%
rename from src/test/scala/fr/hammons/slinc/TypeDescriptorSpec.scala
rename to slinc/src/test/scala/fr/hammons/slinc/TypeDescriptorSpec.scala
diff --git a/src/test/scala/fr/hammons/slinc/TypesSpec.scala b/slinc/src/test/scala/fr/hammons/slinc/TypesSpec.scala
similarity index 100%
rename from src/test/scala/fr/hammons/slinc/TypesSpec.scala
rename to slinc/src/test/scala/fr/hammons/slinc/TypesSpec.scala
diff --git a/src/test/scala/fr/hammons/slinc/jitc/JitSpecification.scala b/slinc/src/test/scala/fr/hammons/slinc/jitc/JitSpecification.scala
similarity index 100%
rename from src/test/scala/fr/hammons/slinc/jitc/JitSpecification.scala
rename to slinc/src/test/scala/fr/hammons/slinc/jitc/JitSpecification.scala
diff --git a/src/test/scala/fr/hammons/slinc/modules/DescriptorSpec.scala b/slinc/src/test/scala/fr/hammons/slinc/modules/DescriptorSpec.scala
similarity index 100%
rename from src/test/scala/fr/hammons/slinc/modules/DescriptorSpec.scala
rename to slinc/src/test/scala/fr/hammons/slinc/modules/DescriptorSpec.scala
diff --git a/src/test/scala/fr/hammons/slinc/modules/LinkageToolsSpec.scala b/slinc/src/test/scala/fr/hammons/slinc/modules/LinkageToolsSpec.scala
similarity index 100%
rename from src/test/scala/fr/hammons/slinc/modules/LinkageToolsSpec.scala
rename to slinc/src/test/scala/fr/hammons/slinc/modules/LinkageToolsSpec.scala