diff --git a/init.lua b/init.lua
index 08c06b1bbf559a86c3a29a81a17ac8f36c708949..069c2eb02f86ae26bfdc91c41cd7deb6ba252aa1 100644
--- a/init.lua
+++ b/init.lua
@@ -12,16 +12,33 @@ local data = {
     password = "eZcKn1zBE6KtbeFnZ33lV1EKnr9Bcn8B",
 }
 
+local ledCount = 10
+
+local led_textures = {
+    "black",
+    "blue",
+    "cyan",
+    "gray",
+    "green",
+    "magenta",
+    "red",
+    "white",
+    "yellow",
+}
+
+local led_colors = {}
+
+local active_pos
+local active_id
+
 local mqttBaseTopic = core.settings:get("ledtree_base_topic") or "ledtree"
 
 local client = mqtt.connect(data.url, data.clientId, data.username, data.password)
 
-mqtt.subscribe(client, "ledtree/led/1", function(topic, payload)
-        core.chat_send_all("Received message from topic "..topic..": "..payload)
-    end
-)
-
-local change_color = function(player, led_id)
+local change_color = function(player, led_id, pos)
+    local pos_string = core.serialize(pos)
+    active_pos = pos
+    active_id = led_id
     local formspec = "size[3,3]" ..
                      "image_button[0,0;1,1;red.png;red;red;false;false;]" ..
                      "image_button[1,0;1,1;green.png;green;green;false;false;]" ..
@@ -40,14 +57,23 @@ local function send_mqtt(id, rgb)
     mqtt.publish(client, mqttBaseTopic.."/led/"..id, "["..rgb.."]")
 end
 
-for id=1, 10, 1 do
-    core.register_node("ledtree:led"..id, {
-        description = "LED"..id,
-        --tiles = "",
-        on_rightclick = function(pos, node, player, itemstack, pointed_thing)
-            change_color(player, id)
-        end,
-    })
+local function replace_block(pos, id, new_texture)
+    --local node = core.get_node(pos)
+    local node_name = "ledtree:led" .. id .. "_" .. new_texture
+    core.set_node(pos, {name = node_name})
+end
+
+for id = 1, ledCount do
+    led_colors[id] = ""
+    for index, texture in ipairs(led_textures) do
+        core.register_node("ledtree:led" .. id .. "_" .. texture, {
+            description = "LED" .. id .." " .. texture,
+            tiles = {texture .. ".png",},
+            on_rightclick = function(pos, node, player, itemstack, pointed_thing)
+                change_color(player, id, pos)
+            end,
+        })
+    end
 end
 
 core.register_on_player_receive_fields(function(player, formname, fields)
@@ -76,8 +102,11 @@ core.register_on_player_receive_fields(function(player, formname, fields)
                 end
 
                 if rgb ~= "" then
-                    core.chat_send_player(player:get_player_name(), "RGB: " .. rgb)
-                    send_mqtt(1, rgb)
+                    core.chat_send_player(player:get_player_name(), "LED: ".. active_id .. " - RGB: " .. rgb .. " ("..color..")")
+                    send_mqtt(active_id, rgb)
+                    replace_block(active_pos, active_id, color)
+
+                    core.close_formspec(player:get_player_name(), "ledtree:colorpicker")
                 end
             end
         end