diff --git a/bin/minecraft/mods/mekanism/gui/GuiRobitCrafting.png b/bin/minecraft/mods/mekanism/gui/GuiRobitCrafting.png
index 4a0660a79..d71323f8a 100644
Binary files a/bin/minecraft/mods/mekanism/gui/GuiRobitCrafting.png and b/bin/minecraft/mods/mekanism/gui/GuiRobitCrafting.png differ
diff --git a/bin/minecraft/mods/mekanism/gui/GuiRobitInventory.png b/bin/minecraft/mods/mekanism/gui/GuiRobitInventory.png
index 5550d85ef..8d3b1c6cd 100644
Binary files a/bin/minecraft/mods/mekanism/gui/GuiRobitInventory.png and b/bin/minecraft/mods/mekanism/gui/GuiRobitInventory.png differ
diff --git a/bin/minecraft/mods/mekanism/gui/GuiRobitMain.png b/bin/minecraft/mods/mekanism/gui/GuiRobitMain.png
index 190873984..f3da94586 100644
Binary files a/bin/minecraft/mods/mekanism/gui/GuiRobitMain.png and b/bin/minecraft/mods/mekanism/gui/GuiRobitMain.png differ
diff --git a/bin/minecraft/mods/mekanism/gui/GuiRobitRepair.png b/bin/minecraft/mods/mekanism/gui/GuiRobitRepair.png
new file mode 100644
index 000000000..e71a612ff
Binary files /dev/null and b/bin/minecraft/mods/mekanism/gui/GuiRobitRepair.png differ
diff --git a/bin/minecraft/mods/mekanism/gui/GuiRobitSmelting.png b/bin/minecraft/mods/mekanism/gui/GuiRobitSmelting.png
index 93510de81..35421f2f4 100644
Binary files a/bin/minecraft/mods/mekanism/gui/GuiRobitSmelting.png and b/bin/minecraft/mods/mekanism/gui/GuiRobitSmelting.png differ
diff --git a/src/minecraft/mekanism/client/ClientProxy.java b/src/minecraft/mekanism/client/ClientProxy.java
index f17e5d755..d3fac232a 100644
--- a/src/minecraft/mekanism/client/ClientProxy.java
+++ b/src/minecraft/mekanism/client/ClientProxy.java
@@ -272,6 +272,8 @@ public class ClientProxy extends CommonProxy
 				{
 					return new GuiRobitSmelting(player.inventory, robit2);
 				}
+			case 25:
+				return new GuiRobitRepair(player.inventory, world, x);
 		}
 		
 		return null;
diff --git a/src/minecraft/mekanism/client/GuiRobitCrafting.java b/src/minecraft/mekanism/client/GuiRobitCrafting.java
index 2e24919f3..3de1a2b09 100644
--- a/src/minecraft/mekanism/client/GuiRobitCrafting.java
+++ b/src/minecraft/mekanism/client/GuiRobitCrafting.java
@@ -72,6 +72,14 @@ public class GuiRobitCrafting extends GuiContainer
 		else {
 			drawTexturedModalRect(guiWidth + 179, guiHeight + 70, 176 + 25, 126, 18, 18);
 		}
+		
+		if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108)
+		{
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 90, 176 + 25, 144, 18, 18);
+		}
+		else {
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 90, 176 + 25, 162, 18, 18);
+		}
     }
     
 	@Override
@@ -106,6 +114,12 @@ public class GuiRobitCrafting extends GuiContainer
 				PacketHandler.sendRobitGui(3, entityId);
 				mc.thePlayer.openGui(Mekanism.instance, 24, mc.theWorld, entityId, 0, 0);
 			}
+			else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108)
+			{
+				mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
+				PacketHandler.sendRobitGui(4, entityId);
+				mc.thePlayer.openGui(Mekanism.instance, 25, mc.theWorld, entityId, 0, 0);
+			}
 		}
 	}
 }
diff --git a/src/minecraft/mekanism/client/GuiRobitInventory.java b/src/minecraft/mekanism/client/GuiRobitInventory.java
index 64e094037..4addb3903 100644
--- a/src/minecraft/mekanism/client/GuiRobitInventory.java
+++ b/src/minecraft/mekanism/client/GuiRobitInventory.java
@@ -71,6 +71,14 @@ public class GuiRobitInventory extends GuiContainer
 		else {
 			drawTexturedModalRect(guiWidth + 179, guiHeight + 70, 176 + 25, 126, 18, 18);
 		}
+		
+		if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108)
+		{
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 90, 176 + 25, 144, 18, 18);
+		}
+		else {
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 90, 176 + 25, 162, 18, 18);
+		}
     }
     
 	@Override
@@ -105,6 +113,12 @@ public class GuiRobitInventory extends GuiContainer
 				PacketHandler.sendRobitGui(3, robit.entityId);
 				mc.thePlayer.openGui(Mekanism.instance, 24, mc.theWorld, robit.entityId, 0, 0);
 			}
+			else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108)
+			{
+				mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
+				PacketHandler.sendRobitGui(4, robit.entityId);
+				mc.thePlayer.openGui(Mekanism.instance, 25, mc.theWorld, robit.entityId, 0, 0);
+			}
 		}
 	}
 }
diff --git a/src/minecraft/mekanism/client/GuiRobitMain.java b/src/minecraft/mekanism/client/GuiRobitMain.java
index ed379151e..af8676975 100644
--- a/src/minecraft/mekanism/client/GuiRobitMain.java
+++ b/src/minecraft/mekanism/client/GuiRobitMain.java
@@ -91,12 +91,20 @@ public class GuiRobitMain extends GuiContainer
 			drawTexturedModalRect(guiWidth + 179, guiHeight + 70, 176 + 25, 126, 18, 18);
 		}
 		
-		if(xAxis >= 152 && xAxis <= 170 && yAxis >= 53 && yAxis <= 71)
+		if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108)
 		{
-			drawTexturedModalRect(guiWidth + 152, guiHeight + 53, 176 + 25, 144, 18, 18);
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 90, 176 + 25, 144, 18, 18);
 		}
 		else {
-			drawTexturedModalRect(guiWidth + 152, guiHeight + 53, 176 + 25, 162, 18, 18);
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 90, 176 + 25, 162, 18, 18);
+		}
+		
+		if(xAxis >= 152 && xAxis <= 170 && yAxis >= 53 && yAxis <= 71)
+		{
+			drawTexturedModalRect(guiWidth + 152, guiHeight + 53, 176 + 25, 180, 18, 18);
+		}
+		else {
+			drawTexturedModalRect(guiWidth + 152, guiHeight + 53, 176 + 25, 198, 18, 18);
 		}
 		
 		int displayInt;
@@ -142,6 +150,12 @@ public class GuiRobitMain extends GuiContainer
 				PacketHandler.sendRobitGui(3, robit.entityId);
 				mc.thePlayer.openGui(Mekanism.instance, 24, mc.theWorld, robit.entityId, 0, 0);
 			}
+			else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108)
+			{
+				mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
+				PacketHandler.sendRobitGui(4, robit.entityId);
+				mc.thePlayer.openGui(Mekanism.instance, 25, mc.theWorld, robit.entityId, 0, 0);
+			}
 			else if(xAxis >= 152 && xAxis <= 170 && yAxis >= 53 && yAxis <= 71)
 			{
 				mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
diff --git a/src/minecraft/mekanism/client/GuiRobitRepair.java b/src/minecraft/mekanism/client/GuiRobitRepair.java
new file mode 100644
index 000000000..c594f16ca
--- /dev/null
+++ b/src/minecraft/mekanism/client/GuiRobitRepair.java
@@ -0,0 +1,260 @@
+package mekanism.client;
+
+import java.util.List;
+
+import mekanism.common.ContainerRobitRepair;
+import mekanism.common.Mekanism;
+import mekanism.common.PacketHandler;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiTextField;
+import net.minecraft.client.gui.inventory.GuiContainer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.ContainerRepair;
+import net.minecraft.inventory.ICrafting;
+import net.minecraft.item.ItemStack;
+import net.minecraft.network.packet.Packet250CustomPayload;
+import net.minecraft.util.StatCollector;
+import net.minecraft.world.World;
+
+import org.lwjgl.input.Keyboard;
+import org.lwjgl.opengl.GL11;
+
+public class GuiRobitRepair extends GuiContainer implements ICrafting
+{
+	public int entityId;
+    private ContainerRepair repairContainer;
+    private GuiTextField itemNameField;
+    private InventoryPlayer playerInventory;
+	
+	public GuiRobitRepair(InventoryPlayer inventory, World world, int id) 
+	{
+		super(new ContainerRobitRepair(inventory, world));
+		xSize += 25;
+		entityId = id;
+		playerInventory = inventory;
+		repairContainer = (ContainerRobitRepair)inventorySlots;
+	}
+
+	@Override
+    public void initGui()
+    {
+        super.initGui();
+        Keyboard.enableRepeatEvents(true);
+        int i = (width - xSize) / 2;
+        int j = (height - ySize) / 2;
+        itemNameField = new GuiTextField(fontRenderer, i + 62, j + 24, 103, 12);
+        itemNameField.setTextColor(-1);
+        itemNameField.setDisabledTextColour(-1);
+        itemNameField.setEnableBackgroundDrawing(false);
+        itemNameField.setMaxStringLength(30);
+        inventorySlots.removeCraftingFromCrafters(this);
+        inventorySlots.addCraftingToCrafters(this);
+    }
+
+	@Override
+    public void onGuiClosed()
+    {
+        super.onGuiClosed();
+        Keyboard.enableRepeatEvents(false);
+        inventorySlots.removeCraftingFromCrafters(this);
+    }
+
+    @Override
+    protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY)
+    {
+        GL11.glDisable(GL11.GL_LIGHTING);
+        fontRenderer.drawString(StatCollector.translateToLocal("container.repair"), 60, 6, 4210752);
+
+        if(repairContainer.maximumCost > 0)
+        {
+            int k = 8453920;
+            boolean flag = true;
+            String s = StatCollector.translateToLocalFormatted("container.repair.cost", new Object[] {Integer.valueOf(repairContainer.maximumCost)});
+
+            if(repairContainer.maximumCost >= 40 && !mc.thePlayer.capabilities.isCreativeMode)
+            {
+                s = StatCollector.translateToLocal("container.repair.expensive");
+                k = 16736352;
+            }
+            else if(!repairContainer.getSlot(2).getHasStack())
+            {
+                flag = false;
+            }
+            else if(!repairContainer.getSlot(2).canTakeStack(playerInventory.player))
+            {
+                k = 16736352;
+            }
+
+            if(flag)
+            {
+                int l = -16777216 | (k & 16579836) >> 2 | k & -16777216;
+                int i1 = (xSize - 25) - 8 - fontRenderer.getStringWidth(s);
+                byte b0 = 67;
+
+                if(fontRenderer.getUnicodeFlag())
+                {
+                    drawRect(i1 - 3, b0 - 2, (xSize - 25) - 7, b0 + 10, -16777216);
+                    drawRect(i1 - 2, b0 - 1, (xSize - 25) - 8, b0 + 9, -12895429);
+                }
+                else {
+                    fontRenderer.drawString(s, i1, b0 + 1, l);
+                    fontRenderer.drawString(s, i1 + 1, b0, l);
+                    fontRenderer.drawString(s, i1 + 1, b0 + 1, l);
+                }
+
+                fontRenderer.drawString(s, i1, b0, k);
+            }
+        }
+
+        GL11.glEnable(GL11.GL_LIGHTING);
+    }
+
+    @Override
+    protected void keyTyped(char par1, int par2)
+    {
+        if(itemNameField.textboxKeyTyped(par1, par2))
+        {
+            repairContainer.updateItemName(itemNameField.getText());
+            mc.thePlayer.sendQueue.addToSendQueue(new Packet250CustomPayload("MC|ItemName", itemNameField.getText().getBytes()));
+        }
+        else {
+            super.keyTyped(par1, par2);
+        }
+    }
+
+    @Override
+    protected void mouseClicked(int mouseX, int mouseY, int button)
+    {
+        super.mouseClicked(mouseX, mouseY, button);
+        itemNameField.mouseClicked(mouseX, mouseY, button);
+        
+		if(button == 0)
+		{
+			int xAxis = (mouseX - (width - xSize) / 2);
+			int yAxis = (mouseY - (height - ySize) / 2);
+			
+			if(xAxis >= 179 && xAxis <= 197 && yAxis >= 10 && yAxis <= 28)
+			{
+				mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
+				PacketHandler.sendRobitGui(0, entityId);
+				mc.thePlayer.openGui(Mekanism.instance, 21, mc.theWorld, entityId, 0, 0);
+			}
+			else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 30 && yAxis <= 48)
+			{
+				mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
+				PacketHandler.sendRobitGui(1, entityId);
+				mc.thePlayer.openGui(Mekanism.instance, 22, mc.theWorld, entityId, 0, 0);
+			}
+			else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 50 && yAxis <= 68)
+			{
+				mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
+				PacketHandler.sendRobitGui(2, entityId);
+				mc.thePlayer.openGui(Mekanism.instance, 23, mc.theWorld, entityId, 0, 0);
+			}
+			else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 70 && yAxis <= 88)
+			{
+				mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
+				PacketHandler.sendRobitGui(3, entityId);
+				mc.thePlayer.openGui(Mekanism.instance, 24, mc.theWorld, entityId, 0, 0);
+			}
+			else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108)
+			{
+				mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
+			}
+		}
+    }
+
+    @Override
+    public void drawScreen(int mouseX, int mouseY, float par3)
+    {
+        super.drawScreen(mouseX, mouseY, par3);
+        GL11.glDisable(GL11.GL_LIGHTING);
+        itemNameField.drawTextBox();
+    }
+
+    @Override
+    protected void drawGuiContainerBackgroundLayer(float par1, int mouseX, int mouseY)
+    {
+        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
+        mc.renderEngine.bindTexture("/mods/mekanism/gui/GuiRobitRepair.png");
+        int guiWidth = (width - xSize) / 2;
+        int guiHeight = (height - ySize) / 2;
+        drawTexturedModalRect(guiWidth, guiHeight, 0, 0, xSize, ySize);
+        
+		int xAxis = (mouseX - (width - xSize) / 2);
+		int yAxis = (mouseY - (height - ySize) / 2);
+        
+		if(xAxis >= 179 && xAxis <= 197 && yAxis >= 10 && yAxis <= 28)
+		{
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 10, 176 + 25, 0, 18, 18);
+		}
+		else {
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 10, 176 + 25, 18, 18, 18);
+		}
+		
+		if(xAxis >= 179 && xAxis <= 197 && yAxis >= 30 && yAxis <= 48)
+		{
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 30, 176 + 25, 36, 18, 18);
+		}
+		else {
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 30, 176 + 25, 54, 18, 18);
+		}
+		
+		if(xAxis >= 179 && xAxis <= 197 && yAxis >= 50 && yAxis <= 68)
+		{
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 50, 176 + 25, 72, 18, 18);
+		}
+		else {
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 50, 176 + 25, 90, 18, 18);
+		}
+		
+		if(xAxis >= 179 && xAxis <= 197 && yAxis >= 70 && yAxis <= 88)
+		{
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 70, 176 + 25, 108, 18, 18);
+		}
+		else {
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 70, 176 + 25, 126, 18, 18);
+		}
+		
+		if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108)
+		{
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 90, 176 + 25, 144, 18, 18);
+		}
+		else {
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 90, 176 + 25, 162, 18, 18);
+		}
+        
+        drawTexturedModalRect(guiWidth + 59, guiHeight + 20, 0, ySize + (repairContainer.getSlot(0).getHasStack() ? 0 : 16), 110, 16);
+
+        if((repairContainer.getSlot(0).getHasStack() || repairContainer.getSlot(1).getHasStack()) && !repairContainer.getSlot(2).getHasStack())
+        {
+            drawTexturedModalRect(guiWidth + 99, guiHeight + 45, xSize + 18, 36, 28, 21);
+        }
+    }
+
+    @Override
+    public void sendContainerAndContentsToPlayer(Container container, List list)
+    {
+        sendSlotContents(container, 0, container.getSlot(0).getStack());
+    }
+
+    @Override
+    public void sendSlotContents(Container container, int slotID, ItemStack itemstack)
+    {
+        if(slotID == 0)
+        {
+            itemNameField.setText(itemstack == null ? "" : itemstack.getDisplayName());
+            itemNameField.setEnabled(itemstack != null);
+
+            if(itemstack != null)
+            {
+                repairContainer.updateItemName(itemNameField.getText());
+                mc.thePlayer.sendQueue.addToSendQueue(new Packet250CustomPayload("MC|ItemName", itemNameField.getText().getBytes()));
+            }
+        }
+    }
+
+    @Override
+    public void sendProgressBarUpdate(Container par1Container, int par2, int par3) {}
+}
diff --git a/src/minecraft/mekanism/client/GuiRobitSmelting.java b/src/minecraft/mekanism/client/GuiRobitSmelting.java
index e0cf73be8..59527d5b9 100644
--- a/src/minecraft/mekanism/client/GuiRobitSmelting.java
+++ b/src/minecraft/mekanism/client/GuiRobitSmelting.java
@@ -74,6 +74,14 @@ public class GuiRobitSmelting extends GuiContainer
 			drawTexturedModalRect(guiWidth + 179, guiHeight + 70, 176 + 25, 126, 18, 18);
 		}
 		
+		if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108)
+		{
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 90, 176 + 25, 144, 18, 18);
+		}
+		else {
+			drawTexturedModalRect(guiWidth + 179, guiHeight + 90, 176 + 25, 162, 18, 18);
+		}
+		
         int displayInt;
 
         if(robit.furnaceBurnTime > 0)
@@ -118,6 +126,12 @@ public class GuiRobitSmelting extends GuiContainer
 			{
 				mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
 			}
+			else if(xAxis >= 179 && xAxis <= 197 && yAxis >= 90 && yAxis <= 108)
+			{
+				mc.sndManager.playSoundFX("random.click", 1.0F, 1.0F);
+				PacketHandler.sendRobitGui(4, robit.entityId);
+				mc.thePlayer.openGui(Mekanism.instance, 25, mc.theWorld, robit.entityId, 0, 0);
+			}
 		}
 	}
 	
diff --git a/src/minecraft/mekanism/client/ModelRobit.java b/src/minecraft/mekanism/client/ModelRobit.java
index d831226ca..eb70523aa 100644
--- a/src/minecraft/mekanism/client/ModelRobit.java
+++ b/src/minecraft/mekanism/client/ModelRobit.java
@@ -20,6 +20,9 @@ public class ModelRobit extends ModelBase
 	public ModelRenderer leftarm;
 	public ModelRenderer righthand;
 	public ModelRenderer lefthand;
+    public ModelRenderer backLight;
+    public ModelRenderer eyeRight;
+    public ModelRenderer eyeLeft;
 
 	public ModelRobit() 
 	{
@@ -98,6 +101,24 @@ public class ModelRobit extends ModelBase
 		lefthand.setTextureSize(64, 64);
 		lefthand.mirror = true;
 		setRotation(lefthand, 0F, 0F, 0F);
+		backLight = new ModelRenderer(this, 20, 15);
+		backLight.addBox(0F, 0F, 0F, 2, 1, 1);
+		backLight.setRotationPoint(-1F, 17.8F, -4.001F);
+		backLight.setTextureSize(64, 64);
+		backLight.mirror = true;
+		setRotation(backLight, 0F, 0F, 0F);
+		eyeRight = new ModelRenderer(this, 43, 25);
+		eyeRight.addBox(0F, 0F, 0F, 1, 1, 1);
+		eyeRight.setRotationPoint(1.5F, 14.5F, 1.50001F);
+		eyeRight.setTextureSize(64, 64);
+		eyeRight.mirror = true;
+		setRotation(eyeRight, 0F, 0F, 0F);
+		eyeLeft = new ModelRenderer(this, 43, 25);
+		eyeLeft.addBox(0F, 0F, 0F, 1, 1, 1);
+		eyeLeft.setRotationPoint(-2.5F, 14.5F, 1.50001F);
+		eyeLeft.setTextureSize(64, 64);
+      	eyeLeft.mirror = true;
+      	setRotation(eyeLeft, 0F, 0F, 0F);
 	}
 
 	@Override
@@ -108,7 +129,6 @@ public class ModelRobit extends ModelBase
 		
 		GL11.glPushMatrix();
 		GL11.glRotatef(180, 0.0F, 1.0F, 0.0F);
-		MekanismRenderer.glowOn();
 		
 		Body.render(f5);
 		Bottom.render(f5);
@@ -123,7 +143,12 @@ public class ModelRobit extends ModelBase
 		righthand.render(f5);
 		lefthand.render(f5);
 		
+		MekanismRenderer.glowOn();
+		backLight.render(f5);
+		eyeRight.render(f5);
+		eyeLeft.render(f5);
 		MekanismRenderer.glowOff();
+		
 		GL11.glPopMatrix();
 	}
 	
@@ -141,6 +166,9 @@ public class ModelRobit extends ModelBase
 		leftarm.render(size);
 		righthand.render(size);
 		lefthand.render(size);
+		backLight.render(size);
+		eyeRight.render(size);
+		eyeLeft.render(size);
 	}
 
 	private void setRotation(ModelRenderer model, float x, float y, float z) 
diff --git a/src/minecraft/mekanism/common/CommonProxy.java b/src/minecraft/mekanism/common/CommonProxy.java
index 6ee08af80..1f1902f24 100644
--- a/src/minecraft/mekanism/common/CommonProxy.java
+++ b/src/minecraft/mekanism/common/CommonProxy.java
@@ -214,6 +214,8 @@ public class CommonProxy
 				{
 					return new ContainerRobitSmelting(player.inventory, robit2);
 				}
+			case 25:
+				return new ContainerRobitRepair(player.inventory, world);
 		}
 		
 		return null;
diff --git a/src/minecraft/mekanism/common/ContainerRobitRepair.java b/src/minecraft/mekanism/common/ContainerRobitRepair.java
new file mode 100644
index 000000000..f4bf03991
--- /dev/null
+++ b/src/minecraft/mekanism/common/ContainerRobitRepair.java
@@ -0,0 +1,20 @@
+package mekanism.common;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.ContainerRepair;
+import net.minecraft.world.World;
+
+public class ContainerRobitRepair extends ContainerRepair
+{
+	public ContainerRobitRepair(InventoryPlayer inventory, World world) 
+	{
+		super(inventory, world, 0, 0, 0, inventory.player);
+	}
+	
+	@Override
+    public boolean canInteractWith(EntityPlayer entityplayer)
+    {
+		return true;
+    }
+}
diff --git a/src/minecraft/mekanism/common/PacketHandler.java b/src/minecraft/mekanism/common/PacketHandler.java
index a04f3db63..568b43c22 100644
--- a/src/minecraft/mekanism/common/PacketHandler.java
+++ b/src/minecraft/mekanism/common/PacketHandler.java
@@ -490,6 +490,10 @@ public class PacketHandler implements IPacketHandler
 			    		{
 			    			entityplayer.openGui(Mekanism.instance, 24, entityplayer.worldObj, id, 0, 0);
 			    		}
+			    		else if(type == 4)
+			    		{
+			    			entityplayer.openGui(Mekanism.instance, 25, entityplayer.worldObj, id, 0, 0);
+			    		}
 			    	} catch(Exception e) {
 			       		System.err.println("[Mekanism] Error while handling robit GUI packet.");
 			    		e.printStackTrace();
diff --git a/src/minecraft/mekanism/common/Tier.java b/src/minecraft/mekanism/common/Tier.java
index d7d0068a7..3aff8186d 100644
--- a/src/minecraft/mekanism/common/Tier.java
+++ b/src/minecraft/mekanism/common/Tier.java
@@ -14,10 +14,10 @@ public final class Tier
 	 */
 	public static enum EnergyCubeTier
 	{
-		BASIC("Basic", 5000000, 120, 320),
-		ADVANCED("Advanced", 10000000, 240, 540),
-		ELITE("Elite", 50000000, 240, 1280),
-		ULTIMATE("Ultimate", 100000000, 480, 2560);
+		BASIC("Basic", 1000000, 120, 320),
+		ADVANCED("Advanced", 5000000, 240, 540),
+		ELITE("Elite", 10000000, 240, 1280),
+		ULTIMATE("Ultimate", 25000000, 480, 2560);
 		
 		public double MAX_ELECTRICITY;
 		public double VOLTAGE;
diff --git a/src/minecraft/mekanism/generators/common/TileEntityHydrogenGenerator.java b/src/minecraft/mekanism/generators/common/TileEntityHydrogenGenerator.java
index 0c8a5da46..5608c101c 100644
--- a/src/minecraft/mekanism/generators/common/TileEntityHydrogenGenerator.java
+++ b/src/minecraft/mekanism/generators/common/TileEntityHydrogenGenerator.java
@@ -30,7 +30,7 @@ public class TileEntityHydrogenGenerator extends TileEntityGenerator implements
 	
 	public TileEntityHydrogenGenerator()
 	{
-		super("Hydrogen Generator", 40000, 400);
+		super("Hydrogen Generator", 40000, 600);
 		inventory = new ItemStack[2];
 	}
 	
@@ -72,7 +72,7 @@ public class TileEntityHydrogenGenerator extends TileEntityGenerator implements
 				setActive(true);
 				
 				hydrogenStored-=2;
-				setEnergy(electricityStored + 200);
+				setEnergy(electricityStored + 300);
 			}
 			else {
 				setActive(false);
diff --git a/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java b/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java
index e2265ff74..6c06abc93 100644
--- a/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java
+++ b/src/minecraft/mekanism/generators/common/TileEntitySolarGenerator.java
@@ -27,8 +27,8 @@ public class TileEntitySolarGenerator extends TileEntityGenerator
 	
 	public TileEntitySolarGenerator()
 	{
-		super("Solar Generator", 96000, 80);
-		GENERATION_RATE = 40;
+		super("Solar Generator", 96000, 60);
+		GENERATION_RATE = 30;
 		inventory = new ItemStack[1];
 	}