diff --git a/Project.toml b/Project.toml
new file mode 100644
index 0000000000000000000000000000000000000000..b0597075f13536995d52adbe6e4eb3fae0959186
--- /dev/null
+++ b/Project.toml
@@ -0,0 +1,4 @@
+name = "MarkovProcesses"
+uuid = "c0b3d30c-0dcf-40cf-8981-542ba9d93cb6"
+authors = ["Mahmoud Bentriou <mahmoud.bentriou@centralesupelec.fr>"]
+version = "0.1.0"
diff --git a/bench/array_memory_order/access_trajectory.jl b/bench/array_memory_order/access_trajectory.jl
index 4936299beee22d95d7b222f6991bf7503c084c08..2138bbd28b55c279015aee859c4156970c92fc6f 100644
--- a/bench/array_memory_order/access_trajectory.jl
+++ b/bench/array_memory_order/access_trajectory.jl
@@ -2,7 +2,7 @@
 using BenchmarkTools
 import BenchmarkTools: mean
 using MarkovProcesses
-include(get_module_path() * "/core/_tests_simulate.jl")
+include(get_module_path() * "/src/_tests_simulate.jl")
 
 BenchmarkTools.DEFAULT_PARAMETERS.samples = 20000
 if ARGS[1] == "SIR"
diff --git a/bench/array_memory_order/multiple_dist_lp_view.jl b/bench/array_memory_order/multiple_dist_lp_view.jl
index 49972a4dbe6b573273fcb3927fd237ccaea9da60..167a78f82c56ef3d87e41b03baff8945aa8f87c1 100644
--- a/bench/array_memory_order/multiple_dist_lp_view.jl
+++ b/bench/array_memory_order/multiple_dist_lp_view.jl
@@ -2,7 +2,7 @@
 using BenchmarkTools
 import BenchmarkTools: mean
 using MarkovProcesses
-include(get_module_path() * "/core/_tests_simulate.jl")
+include(get_module_path() * "/src/_tests_simulate.jl")
 
 str_model = ARGS[1]
 load_model(str_model)
diff --git a/bench/array_memory_order/multiple_sim.jl b/bench/array_memory_order/multiple_sim.jl
index 32c75e782f6cb2cd5438131bddcaa958a0590d9b..fd4ec42173b229bca06a91670de7668266915341 100644
--- a/bench/array_memory_order/multiple_sim.jl
+++ b/bench/array_memory_order/multiple_sim.jl
@@ -3,7 +3,7 @@ using BenchmarkTools
 import BenchmarkTools: mean
 BenchmarkTools.DEFAULT_PARAMETERS.samples = 20000
 using MarkovProcesses
-include(get_module_path() * "/core/_tests_simulate.jl")
+include(get_module_path() * "/src/_tests_simulate.jl")
 
 if ARGS[1] == "SIR"
     l_var = [:S, :I, :R]
diff --git a/bench/array_memory_order/multiple_sim_view.jl b/bench/array_memory_order/multiple_sim_view.jl
index 6b1af301d5861162dc5969a0690df774c8e7510b..0c853d5ec6ef51f89acc736853452b5e7dc299da 100644
--- a/bench/array_memory_order/multiple_sim_view.jl
+++ b/bench/array_memory_order/multiple_sim_view.jl
@@ -2,7 +2,7 @@
 using BenchmarkTools
 import BenchmarkTools: mean
 using MarkovProcesses
-include(get_module_path() * "/core/_tests_simulate.jl")
+include(get_module_path() * "/src/_tests_simulate.jl")
 
 str_model = ARGS[1]
 load_model(str_model)
diff --git a/bench/array_memory_order/read_random_state_trajectory.jl b/bench/array_memory_order/read_random_state_trajectory.jl
index 5fe0da5faa03cba0e94d53b6a05664aa66b9109d..f7141324105ff20abea992f406bccc728295061b 100644
--- a/bench/array_memory_order/read_random_state_trajectory.jl
+++ b/bench/array_memory_order/read_random_state_trajectory.jl
@@ -2,7 +2,7 @@
 using BenchmarkTools
 import BenchmarkTools: mean
 using MarkovProcesses
-include(get_module_path() * "/core/_tests_simulate.jl")
+include(get_module_path() * "/src/_tests_simulate.jl")
 
 BenchmarkTools.DEFAULT_PARAMETERS.samples = 20000
 if ARGS[1] == "SIR"
diff --git a/bench/array_memory_order/read_trajectory.jl b/bench/array_memory_order/read_trajectory.jl
index c1af4e574f712762f905d6462046414c2fd08cfe..3d8d28801bd4363c2cfbe6d50dcae74d5aac62b9 100644
--- a/bench/array_memory_order/read_trajectory.jl
+++ b/bench/array_memory_order/read_trajectory.jl
@@ -2,7 +2,7 @@
 using BenchmarkTools
 import BenchmarkTools: mean
 using MarkovProcesses
-include(get_module_path() * "/core/_tests_simulate.jl")
+include(get_module_path() * "/src/_tests_simulate.jl")
 
 BenchmarkTools.DEFAULT_PARAMETERS.samples = 20000
 if ARGS[1] == "SIR"
diff --git a/bench/array_memory_order/sim.jl b/bench/array_memory_order/sim.jl
index 7df223eb4da8ca1023e2766fe1ee7d3afae949cc..4e114755f72d572f00206b33cb5022e60d1ae857 100644
--- a/bench/array_memory_order/sim.jl
+++ b/bench/array_memory_order/sim.jl
@@ -3,7 +3,7 @@ using BenchmarkTools
 import BenchmarkTools: mean
 BenchmarkTools.DEFAULT_PARAMETERS.samples = 20000
 using MarkovProcesses
-include(get_module_path() * "/core/_tests_simulate.jl")
+include(get_module_path() * "/src/_tests_simulate.jl")
 
 if ARGS[1] == "SIR"
     l_var = [:S, :I, :R]
diff --git a/core/MarkovProcesses.jl b/src/MarkovProcesses.jl
similarity index 100%
rename from core/MarkovProcesses.jl
rename to src/MarkovProcesses.jl
diff --git a/core/_tests_simulate.jl b/src/_tests_simulate.jl
similarity index 100%
rename from core/_tests_simulate.jl
rename to src/_tests_simulate.jl
diff --git a/core/common.jl b/src/common.jl
similarity index 100%
rename from core/common.jl
rename to src/common.jl
diff --git a/core/lha.jl b/src/lha.jl
similarity index 100%
rename from core/lha.jl
rename to src/lha.jl
diff --git a/core/model.jl b/src/model.jl
similarity index 100%
rename from core/model.jl
rename to src/model.jl
diff --git a/core/network_model.jl b/src/network_model.jl
similarity index 100%
rename from core/network_model.jl
rename to src/network_model.jl
diff --git a/core/plots.jl b/src/plots.jl
similarity index 100%
rename from core/plots.jl
rename to src/plots.jl
diff --git a/core/trajectory.jl b/src/trajectory.jl
similarity index 100%
rename from core/trajectory.jl
rename to src/trajectory.jl
diff --git a/core/utils.jl b/src/utils.jl
similarity index 92%
rename from core/utils.jl
rename to src/utils.jl
index 4abde85c61418e2fd1287c7b64a61d7e7c684669..d333f365eb735d7a7af27237406e420a05a77ee6 100644
--- a/core/utils.jl
+++ b/src/utils.jl
@@ -25,7 +25,7 @@ end
 
 load_model(name_model::String) = Base.MainInclude.include("$(get_module_path())/models/$(name_model).jl")
 load_automaton(automaton::String) = Base.MainInclude.include("$(get_module_path())/automata/$(automaton).jl")
-load_plots() = Base.MainInclude.include(get_module_path() * "/core/plots.jl")
+load_plots() = Base.MainInclude.include(get_module_path() * "/src/plots.jl")
 
 newid() = Dates.format(Dates.now(), "YmHMs")
 
diff --git a/test/automaton_abc/distributed_R1.jl b/test/automaton_abc/distributed_R1.jl
index 18e0ad0c08db2cf686f20b03f8fb7d69f9fadd46..e88621aea1f011285e302b67380699bc17f9163f 100644
--- a/test/automaton_abc/distributed_R1.jl
+++ b/test/automaton_abc/distributed_R1.jl
@@ -4,7 +4,7 @@ using Distributed
 addprocs(2)
 module_path = get_module_path()
 @everywhere module_path = $module_path
-@everywhere push!(LOAD_PATH, "$(module_path)/core")
+@everywhere push!(LOAD_PATH, "$(module_path)/src")
 @everywhere using MarkovProcesses
 #=
 @everywhere begin
diff --git a/test/automaton_abc/distributed_abc_euclidean_distance_automaton.jl b/test/automaton_abc/distributed_abc_euclidean_distance_automaton.jl
index fc653e73350ccd8f788d2bf6960de72613afcaff..d3263cbbede8a250785c08e30c0f49663dacdaf7 100644
--- a/test/automaton_abc/distributed_abc_euclidean_distance_automaton.jl
+++ b/test/automaton_abc/distributed_abc_euclidean_distance_automaton.jl
@@ -4,7 +4,7 @@ using Distributed
 addprocs(2)
 module_path = get_module_path()
 @everywhere module_path = $module_path
-@everywhere push!(LOAD_PATH, "$(module_path)/core")
+@everywhere push!(LOAD_PATH, "$(module_path)/src")
 @everywhere using MarkovProcesses
 import LinearAlgebra: dot
 
diff --git a/test/simulation/sim_er_row_buffer_bounded.jl b/test/simulation/sim_er_row_buffer_bounded.jl
index c92dd9e82f2958db59cde9452419e5f67ef32263..c359a4fd6a208187263995bdd0691a6552861821 100644
--- a/test/simulation/sim_er_row_buffer_bounded.jl
+++ b/test/simulation/sim_er_row_buffer_bounded.jl
@@ -1,6 +1,6 @@
 
 using MarkovProcesses 
-include(get_module_path() * "/core/_tests_simulate.jl")
+include(get_module_path() * "/src/_tests_simulate.jl")
 using PyPlot
 
 load_model("_bench_perf_test/ER_row_buffer")
diff --git a/test/simulation/sim_sir_col_buffer_bounded.jl b/test/simulation/sim_sir_col_buffer_bounded.jl
index d68f9901db947487057269c01e643af529e6fb6b..eb168298038f82d704a0f996987deeb0ec298b8f 100644
--- a/test/simulation/sim_sir_col_buffer_bounded.jl
+++ b/test/simulation/sim_sir_col_buffer_bounded.jl
@@ -1,6 +1,6 @@
 
 using MarkovProcesses 
-include(get_module_path() * "/core/_tests_simulate.jl")
+include(get_module_path() * "/src/_tests_simulate.jl")
 using PyPlot
 
 load_model("_bench_perf_test/SIR_col_buffer")
diff --git a/test/simulation/sim_sir_row_buffer_bounded.jl b/test/simulation/sim_sir_row_buffer_bounded.jl
index d10633dc4f8131fd1224e99e5e27ed6768a4c451..50f6b594b2895f96b1b2c6f9b5e0625f576c7007 100644
--- a/test/simulation/sim_sir_row_buffer_bounded.jl
+++ b/test/simulation/sim_sir_row_buffer_bounded.jl
@@ -1,6 +1,6 @@
 
 using MarkovProcesses 
-include(get_module_path() * "/core/_tests_simulate.jl")
+include(get_module_path() * "/src/_tests_simulate.jl")
 using PyPlot
 
 load_model("_bench_perf_test/SIR_row_buffer")
diff --git a/test/unit/distributed_simulation.jl b/test/unit/distributed_simulation.jl
index 06db472f208a4afb71685b0471bb2bf5b8ba5d8b..e3504ac6d4fe2c03bb67d0c6ff3546b6d59e366f 100644
--- a/test/unit/distributed_simulation.jl
+++ b/test/unit/distributed_simulation.jl
@@ -6,7 +6,7 @@ using MarkovProcesses
 addprocs(2)
 module_path = get_module_path()
 @everywhere module_path = $module_path
-@everywhere push!(LOAD_PATH, "$(module_path)/core")
+@everywhere push!(LOAD_PATH, "$(module_path)/src")
 @everywhere using MarkovProcesses
 
 test_all = true