diff --git a/appinfo.json b/appinfo.json
index c6ce036..7611e52 100644
--- a/appinfo.json
+++ b/appinfo.json
@@ -1,7 +1,9 @@
 {
-    "appKeys": {},
+    "appKeys": {
+        "colors": 0
+    },
     "capabilities": [
-        ""
+        "configurable"
     ],
     "companyName": "lastfuture@lastfuture.de",
     "longName": "Arcangle",
diff --git a/src/js/pebble-js-app.js b/src/js/pebble-js-app.js
index f80acd1..4756640 100644
--- a/src/js/pebble-js-app.js
+++ b/src/js/pebble-js-app.js
@@ -3,7 +3,7 @@ Pebble.addEventListener('ready', function() {
 });
 
 Pebble.addEventListener('showConfiguration', function() {
-    var url='http://pebble.lastfuture.de/config/supersimple13/';
+    var url='http://pebble.lastfuture.de/config/arcangle10/';
     console.log('Showing configuration page: '+url);
     Pebble.openURL(url);
 });
diff --git a/src/main.c b/src/main.c
index 6b079cf..02432d4 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,6 +1,8 @@
 #include <pebble.h>
 
-#define ANTIALIASING true
+#define KEY_COLORS         0
+
+#define ANTIALIASING       true
 
 #define FINAL_RADIUS       88
 #define HAND_WIDTH         6
@@ -23,12 +25,52 @@ static Layer *s_canvas_layer;
 
 static GPoint s_center;
 static Time s_last_time;
-static int s_radius = 0;
+static int s_radius = 0, colors = 1;
 static bool s_animating = false, debug = false;
 static float anim_offset;
 
 static GColor gcolorbg, gcolorh, gcolort;
 
+static void handle_colorchange() {
+  switch(colors) {
+    case 1: // greens
+      gcolorh = GColorMediumSpringGreen;
+      gcolort = GColorMidnightGreen;
+      break;
+    
+    case 3: // blues
+      gcolorh = GColorBlueMoon;
+      gcolort = GColorOxfordBlue;
+      break;
+    
+    case 2: // reds
+      gcolorh = GColorRed;
+      gcolort = GColorBulgarianRose;
+      break;
+    
+    case 4: // greys
+      gcolorh = GColorWhite;
+      gcolort = GColorDarkGray;
+      break;
+    
+    default:
+      break;
+  }
+}
+
+static void inbox_received_handler(DictionaryIterator *iter, void *context) {
+  Tuple *colors_t = dict_find(iter, KEY_COLORS);
+    
+  if(colors_t) {
+    colors = colors_t->value->uint8;
+    persist_write_int(KEY_COLORS, colors);
+    handle_colorchange();
+  }
+  if(s_canvas_layer) {
+    layer_mark_dirty(s_canvas_layer);
+  }
+}
+
 /*************************** AnimationImplementation **************************/
 
 static void animation_started(Animation *anim, void *context) {
@@ -172,6 +214,14 @@ static void window_load(Window *window) {
 
   s_center = grect_center_point(&window_bounds);
   
+  if (persist_exists(KEY_COLORS)) {
+    colors = persist_read_int(KEY_COLORS);
+  } else {
+    colors = 1;
+  }
+
+
+  
   s_canvas_layer = layer_create(window_bounds);
   layer_set_update_proc(s_canvas_layer, update_proc);
   layer_add_child(window_layer, s_canvas_layer);
@@ -215,21 +265,10 @@ static void init() {
   window_stack_push(s_main_window, true);
   
   gcolorbg = GColorBlack;
-  // greens
   gcolorh = GColorMediumSpringGreen;
   gcolort = GColorMidnightGreen;
-  
-  // blues
-  //gcolorh = GColorPictonBlue;
-  //gcolort = GColorCobaltBlue;
-  
-  // reds
-  //gcolorh = GColorRed;
-  //gcolort = GColorDarkCandyAppleRed;
-  
-  // greys
-  //gcolorh = GColorWhite;
-  //gcolort = GColorDarkGray;
+
+  handle_colorchange();
   
   if (debug) {
     tick_timer_service_subscribe(SECOND_UNIT, tick_handler);
@@ -240,6 +279,11 @@ static void init() {
   if (debug) {
     light_enable(true);
   }
+  
+  app_message_register_inbox_received(inbox_received_handler);
+  app_message_open(app_message_inbox_size_maximum(), app_message_outbox_size_maximum());
+
+
 
   // Prepare animations
   AnimationImplementation radius_impl = {