0.4 release
diff --git a/bin/common.sh b/bin/common.sh
index de491ed..e0dcd0b 100644
--- a/bin/common.sh
+++ b/bin/common.sh
@@ -2,7 +2,7 @@
 
 # This script should be sourced with $BASE set to the base of the repository
 
-VERSION=0.4-SNAPSHOT
+VERSION=0.4
 
 # Play framework related
 PLAY_OPTS=
diff --git a/commons/build.sbt b/commons/build.sbt
index edf8208..86501db 100644
--- a/commons/build.sbt
+++ b/commons/build.sbt
@@ -1,6 +1,6 @@
 name := "PredictionIO Commons"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 organization := "io.prediction"
 
diff --git a/dist/bin/common.sh b/dist/bin/common.sh
index 664de84..c3e59f9 100644
--- a/dist/bin/common.sh
+++ b/dist/bin/common.sh
@@ -2,7 +2,7 @@
 
 # This script should be sourced with $BASE set to the base of the repository
 
-VERSION=0.4-SNAPSHOT
+VERSION=0.4
 
 # Play framework related
 PLAY_OPTS=""
diff --git a/dist/bin/conncheck b/dist/bin/conncheck
index 2d4a17c..89ab34e 100755
--- a/dist/bin/conncheck
+++ b/dist/bin/conncheck
@@ -126,7 +126,7 @@
 
 PROG_NAME=conncheck
 
-JARS="${PROG_HOME}/lib/predictionio-connection-check-tool_2.10-0.4-SNAPSHOT.jar:"
+JARS="${PROG_HOME}/lib/predictionio-connection-check-tool_2.10-0.4.jar:"
 JARS="${JARS}:${PROG_HOME}/lib/casbah-commons_2.10-2.5.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/casbah-core_2.10-2.5.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/casbah-gridfs_2.10-2.5.0.jar"
@@ -138,7 +138,7 @@
 JARS="${JARS}:${PROG_HOME}/lib/joda-time-2.1.jar"
 JARS="${JARS}:${PROG_HOME}/lib/mongo-java-driver-2.10.1.jar"
 JARS="${JARS}:${PROG_HOME}/lib/nscala-time_2.10-0.2.0.jar"
-JARS="${JARS}:${PROG_HOME}/lib/predictionio-commons_2.10-0.4-SNAPSHOT.jar"
+JARS="${JARS}:${PROG_HOME}/lib/predictionio-commons_2.10-0.4.jar"
 JARS="${JARS}:${PROG_HOME}/lib/scala-library-2.10.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/scalaz-concurrent_2.10-7.0.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/scalaz-core_2.10-7.0.0.jar"
diff --git a/dist/bin/settings04 b/dist/bin/settings04
index f023d2f..f169668 100755
--- a/dist/bin/settings04
+++ b/dist/bin/settings04
@@ -126,7 +126,7 @@
 
 PROG_NAME=settings04
 
-JARS="${PROG_HOME}/lib/predictionio-0.3-to-0.4-settings-migration_2.10-0.4-SNAPSHOT.jar:"
+JARS="${PROG_HOME}/lib/predictionio-0.3-to-0.4-settings-migration_2.10-0.4.jar:"
 JARS="${JARS}:${PROG_HOME}/lib/casbah-commons_2.10-2.5.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/casbah-core_2.10-2.5.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/casbah-gridfs_2.10-2.5.0.jar"
diff --git a/dist/bin/settingsinit b/dist/bin/settingsinit
index 13d0d73..6664417 100755
--- a/dist/bin/settingsinit
+++ b/dist/bin/settingsinit
@@ -126,7 +126,7 @@
 
 PROG_NAME=settingsinit
 
-JARS="${PROG_HOME}/lib/predictionio-settings-initialization_2.10-0.4-SNAPSHOT.jar:"
+JARS="${PROG_HOME}/lib/predictionio-settings-initialization_2.10-0.4.jar:"
 JARS="${JARS}:${PROG_HOME}/lib/casbah-commons_2.10-2.5.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/casbah-core_2.10-2.5.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/casbah-gridfs_2.10-2.5.0.jar"
@@ -138,7 +138,7 @@
 JARS="${JARS}:${PROG_HOME}/lib/joda-time-2.1.jar"
 JARS="${JARS}:${PROG_HOME}/lib/mongo-java-driver-2.10.1.jar"
 JARS="${JARS}:${PROG_HOME}/lib/nscala-time_2.10-0.2.0.jar"
-JARS="${JARS}:${PROG_HOME}/lib/predictionio-commons_2.10-0.4-SNAPSHOT.jar"
+JARS="${JARS}:${PROG_HOME}/lib/predictionio-commons_2.10-0.4.jar"
 JARS="${JARS}:${PROG_HOME}/lib/scala-library-2.10.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/scalaz-concurrent_2.10-7.0.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/scalaz-core_2.10-7.0.0.jar"
diff --git a/dist/bin/users b/dist/bin/users
index da37ae5..1370ed9 100755
--- a/dist/bin/users
+++ b/dist/bin/users
@@ -126,7 +126,7 @@
 
 PROG_NAME=users
 
-JARS="${PROG_HOME}/lib/predictionio-users-tool_2.10-0.4-SNAPSHOT.jar:"
+JARS="${PROG_HOME}/lib/predictionio-users-tool_2.10-0.4.jar:"
 JARS="${JARS}:${PROG_HOME}/lib/casbah-commons_2.10-2.5.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/casbah-core_2.10-2.5.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/casbah-gridfs_2.10-2.5.0.jar"
@@ -138,7 +138,7 @@
 JARS="${JARS}:${PROG_HOME}/lib/joda-time-2.1.jar"
 JARS="${JARS}:${PROG_HOME}/lib/mongo-java-driver-2.10.1.jar"
 JARS="${JARS}:${PROG_HOME}/lib/nscala-time_2.10-0.2.0.jar"
-JARS="${JARS}:${PROG_HOME}/lib/predictionio-commons_2.10-0.4-SNAPSHOT.jar"
+JARS="${JARS}:${PROG_HOME}/lib/predictionio-commons_2.10-0.4.jar"
 JARS="${JARS}:${PROG_HOME}/lib/scala-library-2.10.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/scalaz-concurrent_2.10-7.0.0.jar"
 JARS="${JARS}:${PROG_HOME}/lib/scalaz-core_2.10-7.0.0.jar"
diff --git a/dist/conf/predictionio.conf b/dist/conf/predictionio.conf
index a4dc865..b942684 100644
--- a/dist/conf/predictionio.conf
+++ b/dist/conf/predictionio.conf
@@ -75,26 +75,26 @@
 io.prediction.commons.modeldata.training.db.port=27017
 
 # PredictionIO Algorithms
-pdio-knnitembased.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-pdio-latestrank.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-pdio-randomrank.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-itembased.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-parallelals.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-knnuserbased.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-thresholduserbased.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-slopeone.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-alswr.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-svdsgd.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-svdplusplus.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
+pdio-knnitembased.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+pdio-latestrank.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+pdio-randomrank.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-itembased.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-parallelals.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-knnuserbased.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-thresholduserbased.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-slopeone.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-alswr.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-svdsgd.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-svdplusplus.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
 
 # Itemrec Scala Mahout Algorithms
-io.prediction.algorithms.mahout.itemrec.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Scala-Mahout-assembly-0.4-SNAPSHOT.jar
+io.prediction.algorithms.mahout.itemrec.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Algorithms-Scala-Mahout-assembly-0.4.jar
 
 # Mahout core job
 io.prediction.algorithms.mahout-core-job.jar=${io.prediction.base}/vendors/mahout-0.8-snapshot/mahout-core-0.8-SNAPSHOT-job.jar
 
 # PredictionIO Offline Evaluation
-io.prediction.evaluations.scalding.itemrec.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Evaluations-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-io.prediction.evaluations.itemrec.topkitems.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Evaluations-TopKItems-assembly-0.4-SNAPSHOT.jar
-io.prediction.evaluations.itemrec.trainingtestsplit.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Evaluations-Scala-TrainingTestSplitTime-assembly-0.4-SNAPSHOT.jar
-io.prediction.evaluations.itemrec.paramgen.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Evaluations-ParamGen-assembly-0.4-SNAPSHOT.jar
+io.prediction.evaluations.scalding.itemrec.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Evaluations-Hadoop-Scalding-assembly-0.4.jar
+io.prediction.evaluations.itemrec.topkitems.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Evaluations-TopKItems-assembly-0.4.jar
+io.prediction.evaluations.itemrec.trainingtestsplit.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Evaluations-Scala-TrainingTestSplitTime-assembly-0.4.jar
+io.prediction.evaluations.itemrec.paramgen.jar=${io.prediction.base}/lib/PredictionIO-Process-ItemRec-Evaluations-ParamGen-assembly-0.4.jar
diff --git a/output/build.sbt b/output/build.sbt
index 0bde362..a47be8c 100644
--- a/output/build.sbt
+++ b/output/build.sbt
@@ -1,6 +1,6 @@
 name := "PredictionIO Output"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 organization := "io.prediction"
 
@@ -9,7 +9,7 @@
 scalacOptions in (Compile, doc) ++= Opts.doc.title("PredictionIO Output API Documentation")
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
+  "io.prediction" %% "predictionio-commons" % "0.4",
   "com.github.nscala-time" %% "nscala-time" % "0.2.0",
   "junit" % "junit" % "4.11",
   "org.specs2" %% "specs2" % "1.14" % "test"
diff --git a/process/commons/hadoop/scalding/build.sbt b/process/commons/hadoop/scalding/build.sbt
index 1c8cd9a..83f59b5 100644
--- a/process/commons/hadoop/scalding/build.sbt
+++ b/process/commons/hadoop/scalding/build.sbt
@@ -2,7 +2,7 @@
 
 organization := "io.prediction"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 scalaVersion := "2.9.2"
 
@@ -32,7 +32,7 @@
 )
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT"
+  "io.prediction" %% "predictionio-commons" % "0.4"
 )
 
 resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"
diff --git a/process/engines/itemrec/algorithms/hadoop/scalding/build.sbt b/process/engines/itemrec/algorithms/hadoop/scalding/build.sbt
index c76b972..9982296 100644
--- a/process/engines/itemrec/algorithms/hadoop/scalding/build.sbt
+++ b/process/engines/itemrec/algorithms/hadoop/scalding/build.sbt
@@ -4,7 +4,7 @@
 
 packageOptions += Package.ManifestAttributes(java.util.jar.Attributes.Name.MAIN_CLASS -> "com.twitter.scalding.Tool")
 
-version in ThisBuild := "0.4-SNAPSHOT"
+version in ThisBuild := "0.4"
 
 scalaVersion in ThisBuild := "2.9.2"
 
diff --git a/process/engines/itemrec/algorithms/hadoop/scalding/knnitembased/build.sbt b/process/engines/itemrec/algorithms/hadoop/scalding/knnitembased/build.sbt
index 2eb2e37..5f7eca1 100644
--- a/process/engines/itemrec/algorithms/hadoop/scalding/knnitembased/build.sbt
+++ b/process/engines/itemrec/algorithms/hadoop/scalding/knnitembased/build.sbt
@@ -1,6 +1,6 @@
 name := "PredictionIO Process ItemRec Algorithms Hadoop Scalding KNNItemBased"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 scalaVersion := "2.9.2"
 
@@ -18,8 +18,8 @@
 )
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
-  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4-SNAPSHOT"
+  "io.prediction" %% "predictionio-commons" % "0.4",
+  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4"
 )
 
 resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"
diff --git a/process/engines/itemrec/algorithms/hadoop/scalding/latestrank/build.sbt b/process/engines/itemrec/algorithms/hadoop/scalding/latestrank/build.sbt
index 7c41033..4ce0dc5 100644
--- a/process/engines/itemrec/algorithms/hadoop/scalding/latestrank/build.sbt
+++ b/process/engines/itemrec/algorithms/hadoop/scalding/latestrank/build.sbt
@@ -1,6 +1,6 @@
 name := "PredictionIO Process ItemRec Algorithms Hadoop Scalding LatestRank"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 scalaVersion := "2.9.2"
 
@@ -18,8 +18,8 @@
 )
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
-  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4-SNAPSHOT"
+  "io.prediction" %% "predictionio-commons" % "0.4",
+  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4"
 )
 
 resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"
diff --git a/process/engines/itemrec/algorithms/hadoop/scalding/mahout/build.sbt b/process/engines/itemrec/algorithms/hadoop/scalding/mahout/build.sbt
index cebdd6d..3da3b5d 100644
--- a/process/engines/itemrec/algorithms/hadoop/scalding/mahout/build.sbt
+++ b/process/engines/itemrec/algorithms/hadoop/scalding/mahout/build.sbt
@@ -1,6 +1,6 @@
 name := "PredictionIO Process ItemRec Algorithms Hadoop Scalding Mahout"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 scalaVersion := "2.9.2"
 
@@ -18,8 +18,8 @@
 )
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
-  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4-SNAPSHOT"
+  "io.prediction" %% "predictionio-commons" % "0.4",
+  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4"
 )
 
 resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"
diff --git a/process/engines/itemrec/algorithms/hadoop/scalding/randomrank/build.sbt b/process/engines/itemrec/algorithms/hadoop/scalding/randomrank/build.sbt
index dc174f8..25574a0 100644
--- a/process/engines/itemrec/algorithms/hadoop/scalding/randomrank/build.sbt
+++ b/process/engines/itemrec/algorithms/hadoop/scalding/randomrank/build.sbt
@@ -1,6 +1,6 @@
 name := "PredictionIO Process ItemRec Algorithms Hadoop Scalding RandomRank"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 scalaVersion := "2.9.2"
 
@@ -18,8 +18,8 @@
 )
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
-  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4-SNAPSHOT"
+  "io.prediction" %% "predictionio-commons" % "0.4",
+  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4"
 )
 
 resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"
diff --git a/process/engines/itemrec/algorithms/scala/mahout/build.sbt b/process/engines/itemrec/algorithms/scala/mahout/build.sbt
index 7925fc3..aae73a6 100644
--- a/process/engines/itemrec/algorithms/scala/mahout/build.sbt
+++ b/process/engines/itemrec/algorithms/scala/mahout/build.sbt
@@ -4,7 +4,7 @@
 
 packageOptions += Package.ManifestAttributes(java.util.jar.Attributes.Name.MAIN_CLASS -> "io.prediction.commons.mahout.itemrec.MahoutJob")
 
-version in ThisBuild:= "0.4-SNAPSHOT"
+version in ThisBuild:= "0.4"
 
 scalaVersion in ThisBuild:= "2.10.0"
 
diff --git a/process/engines/itemrec/algorithms/scala/mahout/commons/build.sbt b/process/engines/itemrec/algorithms/scala/mahout/commons/build.sbt
index 133bec8..e7d6e35 100644
--- a/process/engines/itemrec/algorithms/scala/mahout/commons/build.sbt
+++ b/process/engines/itemrec/algorithms/scala/mahout/commons/build.sbt
@@ -1,7 +1,7 @@
 name := "PredictionIO-Process-ItemRec-Algorithms-Scala-Mahout-Commons"
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT"
+  "io.prediction" %% "predictionio-commons" % "0.4"
 )
 
 // Mahout's dependencies
diff --git a/process/engines/itemrec/evaluations/hadoop/scalding/build.sbt b/process/engines/itemrec/evaluations/hadoop/scalding/build.sbt
index 33fdba1..38f7c92 100644
--- a/process/engines/itemrec/evaluations/hadoop/scalding/build.sbt
+++ b/process/engines/itemrec/evaluations/hadoop/scalding/build.sbt
@@ -4,7 +4,7 @@
 
 packageOptions += Package.ManifestAttributes(java.util.jar.Attributes.Name.MAIN_CLASS -> "com.twitter.scalding.Tool")
 
-version in ThisBuild := "0.4-SNAPSHOT"
+version in ThisBuild := "0.4"
 
 scalaVersion in ThisBuild := "2.9.2"
 
diff --git a/process/engines/itemrec/evaluations/hadoop/scalding/metrics/map/build.sbt b/process/engines/itemrec/evaluations/hadoop/scalding/metrics/map/build.sbt
index b298bbc..54bf98f 100644
--- a/process/engines/itemrec/evaluations/hadoop/scalding/metrics/map/build.sbt
+++ b/process/engines/itemrec/evaluations/hadoop/scalding/metrics/map/build.sbt
@@ -1,6 +1,6 @@
 name := "PredictionIO Process ItemRec Evaluations Hadoop Scalding Metrics MAP"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 scalaVersion := "2.9.2"
 
@@ -18,8 +18,8 @@
 )
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
-  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4-SNAPSHOT"
+  "io.prediction" %% "predictionio-commons" % "0.4",
+  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4"
 )
 
 resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"
diff --git a/process/engines/itemrec/evaluations/hadoop/scalding/trainingtestsplit/build.sbt b/process/engines/itemrec/evaluations/hadoop/scalding/trainingtestsplit/build.sbt
index c7a3fc5..0537a35 100644
--- a/process/engines/itemrec/evaluations/hadoop/scalding/trainingtestsplit/build.sbt
+++ b/process/engines/itemrec/evaluations/hadoop/scalding/trainingtestsplit/build.sbt
@@ -1,6 +1,6 @@
 name := "PredictionIO Process ItemRec Evaluations Hadoop Scalding TrainingTestSplit"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 scalaVersion := "2.9.2"
 
@@ -18,8 +18,8 @@
 )
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
-  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4-SNAPSHOT"
+  "io.prediction" %% "predictionio-commons" % "0.4",
+  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4"
 )
 
 resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"
diff --git a/process/engines/itemrec/evaluations/scala/paramgen/build.sbt b/process/engines/itemrec/evaluations/scala/paramgen/build.sbt
index d8b47d3..689b1b6 100644
--- a/process/engines/itemrec/evaluations/scala/paramgen/build.sbt
+++ b/process/engines/itemrec/evaluations/scala/paramgen/build.sbt
@@ -4,12 +4,12 @@
 
 name := "PredictionIO-Process-ItemRec-Evaluations-ParamGen"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 scalaVersion := "2.10.0"
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
+  "io.prediction" %% "predictionio-commons" % "0.4",
   "ch.qos.logback" % "logback-classic" % "1.0.9",
   "ch.qos.logback" % "logback-core" % "1.0.9",
   "com.typesafe" % "config" % "1.0.0",
diff --git a/process/engines/itemrec/evaluations/scala/topkitems/build.sbt b/process/engines/itemrec/evaluations/scala/topkitems/build.sbt
index f7ed077..5568123 100644
--- a/process/engines/itemrec/evaluations/scala/topkitems/build.sbt
+++ b/process/engines/itemrec/evaluations/scala/topkitems/build.sbt
@@ -4,13 +4,13 @@
 
 name := "PredictionIO-Process-ItemRec-Evaluations-TopKItems"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 scalaVersion := "2.10.0"
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
-  "io.prediction" %% "predictionio-output" % "0.4-SNAPSHOT",
+  "io.prediction" %% "predictionio-commons" % "0.4",
+  "io.prediction" %% "predictionio-output" % "0.4",
   "ch.qos.logback" % "logback-classic" % "1.0.9",
   "ch.qos.logback" % "logback-core" % "1.0.9",
   "com.github.scala-incubator.io" %% "scala-io-core" % "0.4.2",
diff --git a/process/engines/itemrec/evaluations/scala/trainingtestsplit/build.sbt b/process/engines/itemrec/evaluations/scala/trainingtestsplit/build.sbt
index cf53c1e..3495b1a 100644
--- a/process/engines/itemrec/evaluations/scala/trainingtestsplit/build.sbt
+++ b/process/engines/itemrec/evaluations/scala/trainingtestsplit/build.sbt
@@ -4,12 +4,12 @@
 
 name := "PredictionIO-Process-ItemRec-Evaluations-Scala-TrainingTestSplitTime"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 scalaVersion in ThisBuild := "2.9.2"
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT"
+  "io.prediction" %% "predictionio-commons" % "0.4"
 )
 
 libraryDependencies += "com.twitter" % "scalding-args_2.9.2" % "0.8.4"
diff --git a/process/engines/itemsim/algorithms/hadoop/scalding/build.sbt b/process/engines/itemsim/algorithms/hadoop/scalding/build.sbt
index e491da7..90ea347 100644
--- a/process/engines/itemsim/algorithms/hadoop/scalding/build.sbt
+++ b/process/engines/itemsim/algorithms/hadoop/scalding/build.sbt
@@ -4,7 +4,7 @@
 
 packageOptions += Package.ManifestAttributes(java.util.jar.Attributes.Name.MAIN_CLASS -> "com.twitter.scalding.Tool")
 
-version in ThisBuild := "0.4-SNAPSHOT"
+version in ThisBuild := "0.4"
 
 scalaVersion in ThisBuild := "2.9.2"
 
diff --git a/process/engines/itemsim/algorithms/hadoop/scalding/itemsimcf/build.sbt b/process/engines/itemsim/algorithms/hadoop/scalding/itemsimcf/build.sbt
index c2e5f6b..544c769 100644
--- a/process/engines/itemsim/algorithms/hadoop/scalding/itemsimcf/build.sbt
+++ b/process/engines/itemsim/algorithms/hadoop/scalding/itemsimcf/build.sbt
@@ -1,6 +1,6 @@
 name := "PredictionIO Process ItemSim Algorithms Hadoop Scalding ItemSimCF"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 scalaVersion := "2.9.2"
 
@@ -18,8 +18,8 @@
 )
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
-  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4-SNAPSHOT"
+  "io.prediction" %% "predictionio-commons" % "0.4",
+  "io.prediction" %% "predictionio-process-commons-hadoop-scalding" % "0.4"
 )
 
 resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository"
diff --git a/servers/admin/project/Build.scala b/servers/admin/project/Build.scala
index d9f3ec6..175c306 100644
--- a/servers/admin/project/Build.scala
+++ b/servers/admin/project/Build.scala
@@ -5,11 +5,11 @@
 object ApplicationBuild extends Build {
 
     val appName         = "predictionio-admin"
-    val appVersion      = "0.4-SNAPSHOT"
+    val appVersion      = "0.4"
 
     val appDependencies = Seq(
-      "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
-      "io.prediction" %% "predictionio-output" % "0.4-SNAPSHOT",
+      "io.prediction" %% "predictionio-commons" % "0.4",
+      "io.prediction" %% "predictionio-output" % "0.4",
       "com.github.nscala-time" %% "nscala-time" % "0.2.0"
     )
 
diff --git a/servers/api/project/Build.scala b/servers/api/project/Build.scala
index bb08138..f783403 100644
--- a/servers/api/project/Build.scala
+++ b/servers/api/project/Build.scala
@@ -5,11 +5,11 @@
 object ApplicationBuild extends Build {
 
   val appName         = "predictionio-api"
-  val appVersion      = "0.4-SNAPSHOT"
+  val appVersion      = "0.4"
 
   val appDependencies = Seq(
-    "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
-    "io.prediction" %% "predictionio-output" % "0.4-SNAPSHOT"
+    "io.prediction" %% "predictionio-commons" % "0.4",
+    "io.prediction" %% "predictionio-output" % "0.4"
   )
 
   val main = play.Project(appName, appVersion, appDependencies).settings(
diff --git a/servers/scheduler/conf/application.conf b/servers/scheduler/conf/application.conf
index a5d6d7c..53689c8 100644
--- a/servers/scheduler/conf/application.conf
+++ b/servers/scheduler/conf/application.conf
@@ -86,26 +86,26 @@
 io.prediction.commons.settings.db.port=27017
 
 # PredictionIO Algorithms
-pdio-knnitembased.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-pdio-latestrank.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-pdio-randomrank.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-itembased.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-parallelals.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-knnuserbased.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-thresholduserbased.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-slopeone.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-alswr.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-svdsgd.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-mahout-svdplusplus.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
+pdio-knnitembased.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+pdio-latestrank.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+pdio-randomrank.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-itembased.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-parallelals.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-knnuserbased.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-thresholduserbased.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-slopeone.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-alswr.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-svdsgd.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
+mahout-svdplusplus.jar=${io.prediction.itemrec.base}/algorithms/hadoop/scalding/target/PredictionIO-Process-ItemRec-Algorithms-Hadoop-Scalding-assembly-0.4.jar
 
 # Itemrec Scala Mahout Algorithms
-io.prediction.algorithms.mahout.itemrec.jar=${io.prediction.itemrec.base}/algorithms/scala/mahout/target/PredictionIO-Process-ItemRec-Algorithms-Scala-Mahout-assembly-0.4-SNAPSHOT.jar
+io.prediction.algorithms.mahout.itemrec.jar=${io.prediction.itemrec.base}/algorithms/scala/mahout/target/PredictionIO-Process-ItemRec-Algorithms-Scala-Mahout-assembly-0.4.jar
 
 # Mahout core job
 io.prediction.algorithms.mahout-core-job.jar=${io.prediction.base}/vendors/mahout-0.8-snapshot-1975/mahout-core-0.8-SNAPSHOT-job.jar
 
 # PredictionIO Offline Evaluation
-io.prediction.evaluations.scalding.itemrec.jar=${io.prediction.itemrec.base}/evaluations/hadoop/scalding/target/PredictionIO-Process-ItemRec-Evaluations-Hadoop-Scalding-assembly-0.4-SNAPSHOT.jar
-io.prediction.evaluations.itemrec.topkitems.jar=${io.prediction.itemrec.base}/evaluations/scala/topkitems/target/PredictionIO-Process-ItemRec-Evaluations-TopKItems-assembly-0.4-SNAPSHOT.jar
-io.prediction.evaluations.itemrec.trainingtestsplit.jar=${io.prediction.itemrec.base}/evaluations/scala/trainingtestsplit/target/PredictionIO-Process-ItemRec-Evaluations-Scala-TrainingTestSplitTime-assembly-0.4-SNAPSHOT.jar
-io.prediction.evaluations.itemrec.paramgen.jar=${io.prediction.itemrec.base}/evaluations/scala/paramgen/target/PredictionIO-Process-ItemRec-Evaluations-ParamGen-assembly-0.4-SNAPSHOT.jar
+io.prediction.evaluations.scalding.itemrec.jar=${io.prediction.itemrec.base}/evaluations/hadoop/scalding/target/PredictionIO-Process-ItemRec-Evaluations-Hadoop-Scalding-assembly-0.4.jar
+io.prediction.evaluations.itemrec.topkitems.jar=${io.prediction.itemrec.base}/evaluations/scala/topkitems/target/PredictionIO-Process-ItemRec-Evaluations-TopKItems-assembly-0.4.jar
+io.prediction.evaluations.itemrec.trainingtestsplit.jar=${io.prediction.itemrec.base}/evaluations/scala/trainingtestsplit/target/PredictionIO-Process-ItemRec-Evaluations-Scala-TrainingTestSplitTime-assembly-0.4.jar
+io.prediction.evaluations.itemrec.paramgen.jar=${io.prediction.itemrec.base}/evaluations/scala/paramgen/target/PredictionIO-Process-ItemRec-Evaluations-ParamGen-assembly-0.4.jar
diff --git a/servers/scheduler/project/Build.scala b/servers/scheduler/project/Build.scala
index 902d0c5..93d65b5 100644
--- a/servers/scheduler/project/Build.scala
+++ b/servers/scheduler/project/Build.scala
@@ -5,11 +5,11 @@
 object ApplicationBuild extends Build {
 
     val appName         = "predictionio-scheduler"
-    val appVersion      = "0.4-SNAPSHOT"
+    val appVersion      = "0.4"
 
     val appDependencies = Seq(
       "commons-io" % "commons-io" % "2.4",
-      "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
+      "io.prediction" %% "predictionio-commons" % "0.4",
       "mysql" % "mysql-connector-java" % "5.1.22",
       "org.clapper" %% "scalasti" % "1.0.0",
       "org.quartz-scheduler" % "quartz" % "2.1.7",
diff --git a/tools/conncheck/build.sbt b/tools/conncheck/build.sbt
index 205fa6b..6674736 100644
--- a/tools/conncheck/build.sbt
+++ b/tools/conncheck/build.sbt
@@ -1,13 +1,13 @@
 name := "PredictionIO Connection Check Tool"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 organization := "io.prediction"
 
 scalaVersion := "2.10.0"
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT"
+  "io.prediction" %% "predictionio-commons" % "0.4"
 )
 
 resolvers ++= Seq(
diff --git a/tools/migration/0.4/settings04/build.sbt b/tools/migration/0.4/settings04/build.sbt
index 3fd6869..50e60bd 100644
--- a/tools/migration/0.4/settings04/build.sbt
+++ b/tools/migration/0.4/settings04/build.sbt
@@ -1,6 +1,6 @@
 name := "PredictionIO 0.3 to 0.4 Settings Migration"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 organization := "io.prediction"
 
diff --git a/tools/settingsinit/build.sbt b/tools/settingsinit/build.sbt
index 51c1204..3c79034 100644
--- a/tools/settingsinit/build.sbt
+++ b/tools/settingsinit/build.sbt
@@ -1,6 +1,6 @@
 name := "PredictionIO Settings Initialization"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 organization := "io.prediction"
 
@@ -9,7 +9,7 @@
 scalacOptions ++= Seq("-deprecation")
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT"
+  "io.prediction" %% "predictionio-commons" % "0.4"
 )
 
 resolvers ++= Seq(
diff --git a/tools/users/build.sbt b/tools/users/build.sbt
index 31e5ac6..de3f846 100644
--- a/tools/users/build.sbt
+++ b/tools/users/build.sbt
@@ -1,13 +1,13 @@
 name := "PredictionIO Users Tool"
 
-version := "0.4-SNAPSHOT"
+version := "0.4"
 
 organization := "io.prediction"
 
 scalaVersion := "2.10.0"
 
 libraryDependencies ++= Seq(
-  "io.prediction" %% "predictionio-commons" % "0.4-SNAPSHOT",
+  "io.prediction" %% "predictionio-commons" % "0.4",
   "jline" % "jline" % "2.9"
 )