diff --git a/src/main/java/resonantinduction/core/nei/RICrusherRecipeHandler.java b/src/main/java/resonantinduction/core/nei/RICrusherRecipeHandler.java
index dc87af260..1b76dc6f2 100644
--- a/src/main/java/resonantinduction/core/nei/RICrusherRecipeHandler.java
+++ b/src/main/java/resonantinduction/core/nei/RICrusherRecipeHandler.java
@@ -12,12 +12,6 @@ public class RICrusherRecipeHandler extends RITemplateRecipeHandler
 		return LanguageUtility.getLocal("resonantinduction.machine.crusher");
 	}
 
-	@Override
-	public void loadTransferRects()
-	{
-		
-	}
-
 	@Override
 	public RecipeType getMachine()
 	{
diff --git a/src/main/java/resonantinduction/core/nei/RIGrinderRecipeHandler.java b/src/main/java/resonantinduction/core/nei/RIGrinderRecipeHandler.java
index 8bfd8cecc..e3c22b049 100644
--- a/src/main/java/resonantinduction/core/nei/RIGrinderRecipeHandler.java
+++ b/src/main/java/resonantinduction/core/nei/RIGrinderRecipeHandler.java
@@ -12,12 +12,6 @@ public class RIGrinderRecipeHandler extends RITemplateRecipeHandler
 		return LanguageUtility.getLocal("resonantinduction.machine.grinder");
 	}
 
-	@Override
-	public void loadTransferRects()
-	{
-		
-	}
-
 	@Override
 	public RecipeType getMachine()
 	{
diff --git a/src/main/java/resonantinduction/core/nei/RIMixerRecipeHandler.java b/src/main/java/resonantinduction/core/nei/RIMixerRecipeHandler.java
index 0de933a11..3fc287e53 100644
--- a/src/main/java/resonantinduction/core/nei/RIMixerRecipeHandler.java
+++ b/src/main/java/resonantinduction/core/nei/RIMixerRecipeHandler.java
@@ -12,12 +12,6 @@ public class RIMixerRecipeHandler extends RITemplateRecipeHandler
 		return LanguageUtility.getLocal("resonantinduction.machine.mixer");
 	}
 
-	@Override
-	public void loadTransferRects()
-	{
-		
-	}
-
 	@Override
 	public RecipeType getMachine()
 	{
diff --git a/src/main/java/resonantinduction/core/nei/RISawmillRecipeHandler.java b/src/main/java/resonantinduction/core/nei/RISawmillRecipeHandler.java
index 8cd1a4ae3..d0a4daff9 100644
--- a/src/main/java/resonantinduction/core/nei/RISawmillRecipeHandler.java
+++ b/src/main/java/resonantinduction/core/nei/RISawmillRecipeHandler.java
@@ -12,12 +12,6 @@ public class RISawmillRecipeHandler extends RITemplateRecipeHandler
 		return LanguageUtility.getLocal("resonantinduction.machine.sawmill");
 	}
 
-	@Override
-	public void loadTransferRects()
-	{
-		
-	}
-
 	@Override
 	public RecipeType getMachine()
 	{
diff --git a/src/main/java/resonantinduction/core/nei/RISmelterRecipeHandler.java b/src/main/java/resonantinduction/core/nei/RISmelterRecipeHandler.java
index 6ca29fc14..c189c1263 100644
--- a/src/main/java/resonantinduction/core/nei/RISmelterRecipeHandler.java
+++ b/src/main/java/resonantinduction/core/nei/RISmelterRecipeHandler.java
@@ -12,12 +12,6 @@ public class RISmelterRecipeHandler extends RITemplateRecipeHandler
 		return LanguageUtility.getLocal("resonantinduction.machine.smelter");
 	}
 
-	@Override
-	public void loadTransferRects()
-	{
-		
-	}
-
 	@Override
 	public RecipeType getMachine()
 	{
diff --git a/src/main/java/resonantinduction/core/nei/RITemplateRecipeHandler.java b/src/main/java/resonantinduction/core/nei/RITemplateRecipeHandler.java
index cd21ce3a6..576decb1c 100644
--- a/src/main/java/resonantinduction/core/nei/RITemplateRecipeHandler.java
+++ b/src/main/java/resonantinduction/core/nei/RITemplateRecipeHandler.java
@@ -1,5 +1,6 @@
 package resonantinduction.core.nei;
 
+import java.awt.Rectangle;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -35,15 +36,13 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
 	@Override
 	public void loadTransferRects()
 	{
-		// transferRects.add(new TemplateRecipeHandler.RecipeTransferRect(new Rectangle(57, 26, 52,
-		// 22), getMachine().name().toLowerCase(), new Object[0]));
-		// No point, there is no GUI class to use it... :(
+		transferRects.add(new TemplateRecipeHandler.RecipeTransferRect(new Rectangle(57, 26, 52, 22), getMachine().name().toLowerCase(), new Object[0]));
 	}
 
 	@Override
 	public int recipiesPerPage()
 	{
-		return 1;
+		return 2;
 	}
 
 	@Override
@@ -58,6 +57,23 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
 		return null;
 	}
 
+	@Override
+	public void loadCraftingRecipes(String outputId, Object... results)
+	{
+		if (outputId.equals(this.getOverlayIdentifier()))
+		{
+			for (Map.Entry<RecipeResource[], RecipeResource[]> irecipe : MachineRecipes.INSTANCE.getRecipes(getMachine()).entrySet())
+			{
+				CachedRIRecipe recipe = new CachedRIRecipe(irecipe);
+				this.arecipes.add(recipe);
+			}
+		}
+        else
+        {
+            super.loadCraftingRecipes(outputId, results);
+        }
+	}
+
 	@Override
 	public void loadCraftingRecipes(ItemStack result)
 	{
@@ -71,6 +87,23 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
 		}
 	}
 
+	@Override
+	public void loadUsageRecipes(String inputId, Object... ingredients)
+	{
+		if (inputId.equals(this.getOverlayIdentifier()))
+		{
+			for (Map.Entry<RecipeResource[], RecipeResource[]> irecipe : MachineRecipes.INSTANCE.getRecipes(getMachine()).entrySet())
+			{
+				CachedRIRecipe recipe = new CachedRIRecipe(irecipe);
+				this.arecipes.add(recipe);
+			}
+		}
+        else
+        {
+            super.loadUsageRecipes(inputId, ingredients);
+        }
+	}
+
 	@Override
 	public void loadUsageRecipes(ItemStack ingredient)
 	{
@@ -147,7 +180,7 @@ public abstract class RITemplateRecipeHandler extends TemplateRecipeHandler
 					// inputSlots[i][0], inputSlots[i++][1]));
 					// TODO fluidstack compatibility
 				}
-				
+
 				if (this.inputs.size() > 0)
 					this.inputs.get(this.inputs.size() - 1).generatePermutations();
 			}