diff --git a/Makefile b/Makefile
index 4e26e3ad13a01a52d28e4f65e92ea456fa3c13fb..02defde654bc4ae66e1f42c9db6b1031fc03a4e1 100644
--- a/Makefile
+++ b/Makefile
@@ -36,35 +36,12 @@ distclean:
 	ocaml setup.ml -distclean
 	rm -rf _build/src
 
-###############################
-# tags
 
-OTAGS=otags
-# otags don't manage to parse gnuplotRif.ml
-NO_TAGS=gnuplotRif.ml
-tags:
-	$(OTAGS) -v $(shell ocamlc -where)/*.mli  $(shell ls src/*.ml | grep -v $(NO_TAGS))
 
 ###############################
-# opam-ing
-
-NAME=lutils
-PACKNAME=$(NAME).$(VERSION)
-WWW=/import/www/DIST-TOOLS/SYNCHRONE
-HTTP=http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE
-
-$(PACKNAME).tgz:
-	git archive --prefix=$(PACKNAME)/ -o $(PACKNAME).tgz HEAD
-
-$(WWW)/pool/$(PACKNAME).tgz: $(PACKNAME).tgz
-	mv $^ $@ 
-
-
-opam : $(WWW)/pool/$(PACKNAME).tgz
-	cd $(WWW)/opam-repository/packages && \
-	oasis2opam   $(HTTP)/pool/$(PACKNAME).tgz && \
-	cd .. ; opam-admin check  && opam-admin make -g
-
+# for developpers
+include ./Makefile.dev
 
+# not gitted stuff
 -include ./Makefile.local
 
diff --git a/Makefile.dev b/Makefile.dev
new file mode 100644
index 0000000000000000000000000000000000000000..b265cf2334ad7b83158aa3a2969915e6e337d75b
--- /dev/null
+++ b/Makefile.dev
@@ -0,0 +1,77 @@
+#######################################################################################
+# Workflow:
+# C=git commit ;  A=git amend ; U=update_version ; O=opam pack
+# to make sure the sha and the version are good, one should never
+# do U and then A.
+# to avoid such problems, legal trace are defined by this automata:
+# 0 -C-> 1
+# 1 -P-> 1
+# 1 -A-> 1
+# 1 -U-> 0
+# to implement such a workflow, C puts a lock (state 1) and U removes it (state 0)
+
+
+###############################
+# a few git shortcuts
+
+uv:update_version
+update_version:
+	rm -f src/lutilsVersion.ml
+	make src/lutilsVersion.ml
+	cp _oasis _oasis.save
+	cat _oasis.save | sed "s/^Version:.*/Version:     $(VERSION)/" > _oasis
+	rm -f committed
+	make clean && make
+
+cia:
+	test -f committed && \
+   echo "*** I won't commit!\n*** until you 'make update_version'!" \
+      || (git commit -a -F log && touch committed)
+
+ci:
+	test -f committed  && \
+   echo "*** I won't commit!\n*** until you 'make update_version'!" \
+      || (git commit  -F log && touch committed)
+
+amend:
+	test -f committed && git commit -a -F log --amend 
+
+
+###############################
+# forge
+
+push:
+	git push git+ssh://$(USER)@scm.forge.imag.fr/var/lib/gforge/chroot/scmrepos/git/lutils/lutils.git
+
+pull:
+	git pull git+ssh://$(USER)@scm.forge.imag.fr/var/lib/gforge/chroot/scmrepos/git/lutils/lutils.git
+
+
+#############################
+# tags
+
+OTAGS=otags
+# otags don't manage to parse gnuplotRif.ml
+NO_TAGS=gnuplotRif.ml
+tags:
+	$(OTAGS) -v $(shell ocamlc -where)/*.mli  $(shell ls src/*.ml | grep -v $(NO_TAGS))
+
+###############################
+# opam-ing
+
+NAME=lutils
+PACKNAME=$(NAME).$(VERSION)
+WWW=/import/www/DIST-TOOLS/SYNCHRONE
+HTTP=http://www-verimag.imag.fr/DIST-TOOLS/SYNCHRONE
+
+$(PACKNAME).tgz:
+	git archive --prefix=$(PACKNAME)/ -o $(PACKNAME).tgz HEAD
+
+$(WWW)/pool/$(PACKNAME).tgz: $(PACKNAME).tgz
+	mv $^ $@ 
+
+
+opam : $(WWW)/pool/$(PACKNAME).tgz
+	cd $(WWW)/opam-repository/packages && \
+	oasis2opam   $(HTTP)/pool/$(PACKNAME).tgz && \
+	cd .. ; opam-admin check  && opam-admin make -g
diff --git a/Makefile.version b/Makefile.version
index 28a0a087a9be6c11d0cb727813b6f1c60f59f943..f9e635d37388f11bf012fc4efe960b5825d92dd8 100644
--- a/Makefile.version
+++ b/Makefile.version
@@ -4,7 +4,6 @@ SHA:=$(shell git log -1 --pretty=format:"%h")
 COMMIT_NB:=$(shell git log --pretty=oneline  | wc -l)
 
 
-
 VERSION:=1.$(COMMIT_NB)
 
 
diff --git a/doc/version.tex b/doc/version.tex
index d802caf3cd351b71455ca77736f4a4bfb7271ade..59584d9ea7f01ae0da8be36530b6fff38e61eae1 100644
--- a/doc/version.tex
+++ b/doc/version.tex
@@ -1,4 +1,4 @@
 \newcommand{\version}{1.4}
-\newcommand{\sha}{f76bf61}
+\newcommand{\sha}{4f6f011}
 \newcommand{\versionname}{none}
-\newcommand{\versiondate}{28-01-16}
+\newcommand{\versiondate}{02-02-16}
diff --git a/src/META b/src/META
index 1a473173e176a4436dc476784bb546fe583f022f..f436f13ff820352b6484f9602499fef4e57d5cd9 100644
--- a/src/META
+++ b/src/META
@@ -1,6 +1,6 @@
 # OASIS_START
-# DO NOT EDIT (digest: dbea03afd5beab572192d8711a6cda76)
-version = "1.0"
+# DO NOT EDIT (digest: 001f58193d137e873d0b1451c9b716bc)
+version = "1.4"
 description = "shared by Verimag/synchronous tools (lustre, lutin, rdbg)."
 requires = "unix str camlp4 num"
 archive(byte) = "lutils.cma"