diff --git a/src/Makefile b/src/Makefile
index 5523dd24a8e6b6bdd9e87d4a7cb0723f30796ec5..101fa59df66a3b3ddb2d03fb8772092db7d091c2 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -2,6 +2,7 @@
 include ./findcudalib.mk
 INCLUDE = $(CUDA_PATH)/include
 
+
 ifeq ($(dbg),1)
 	NV_FLAGS += -g -G
 	EX_FLAGS = -g -O0 -m$(OS_SIZE)
@@ -9,6 +10,20 @@ else
 	EX_FLAGS = -O3 -m$(OS_SIZE)
 endif
 
+## Determine the version; TODO add tags for versions
+ifndef (VERSION)
+ifeq ($(shell git status >& /dev/null && echo true),true)
+	VERSION:=git rev. $(shell git rev-parse HEAD | sed 's/\(.\{8\}\).*/\1/')
+ifneq ($(shell git status --porcelain),)
+	VERSION:=$(VERSION) (modified)
+endif
+else 
+	VERSION:=unknown (not compiled in a git repository)
+endif
+endif
+CC_FLAGS += -DVERSION="\"$(VERSION)\""
+
+
 CC_FLAGS += -I$(CUDA_PATH)/include
 CC_FLAGS += -Wall -Wno-write-strings -std=c++0x -pedantic # TODO: test on Mac OSX and other architectures
 NV_FLAGS += -lineinfo
diff --git a/src/arbd.cpp b/src/arbd.cpp
index 98c93e2be75e40ec5ac9cb78cf25b1d453988a1d..d277fc829e6b4bc7d3c59ab0cbaa33e05ea717e1 100644
--- a/src/arbd.cpp
+++ b/src/arbd.cpp
@@ -31,7 +31,12 @@ int main(int argc, char* argv[]) {
 		return 0;
 	} else if (argc == 2 && (strcmp(argv[1], "--version") == 0)) {
 		// --version
-		printf("%s Nov 2016 (alpha)\n", argv[0]);
+		// printf("%s Nov 2016 (alpha)\n", argv[0]);
+#ifdef VERSION
+	    printf("%s %s\n", argv[0], VERSION);
+#else
+	    printf("%s Nov 2016 (alpha)\n", argv[0]);
+#endif
 		return 0;
 	} else if (argc == 2 && (strcmp(argv[1], "--info") == 0)) {
 		// --info
@@ -46,8 +51,7 @@ int main(int argc, char* argv[]) {
 	// printf("Everything's great when you're...BrownTown\n");
 	printf("  –––––––––––––––––––––––––––––––––––––––––––––\n");
 	printf("  |    Atomic Resolution Brownian Dynamics    |\n");
-	printf("  –––––––––––––––––––––––––––––––––––––––––––––\n\n");
-
+	printf("  –––––––––––––––––––––––––––––––––––––––––––––\n");
 	GPUManager::init();
 
 	size_t n_gpus = max(GPUManager::gpus.size(), 1lu);