diff --git a/src/main/java/techreborn/Core.java b/src/main/java/techreborn/Core.java
index 00b61f2d9..65f6e2f6d 100644
--- a/src/main/java/techreborn/Core.java
+++ b/src/main/java/techreborn/Core.java
@@ -1,11 +1,15 @@
 package techreborn;
 
+import cpw.mods.fml.common.FMLCommonHandler;
 import cpw.mods.fml.common.Mod;
 import cpw.mods.fml.common.event.FMLInitializationEvent;
 import cpw.mods.fml.common.event.FMLPostInitializationEvent;
 import cpw.mods.fml.common.event.FMLPreInitializationEvent;
 import cpw.mods.fml.common.network.NetworkRegistry;
 import cpw.mods.fml.common.registry.GameRegistry;
+import erogenousbeef.coreTR.multiblock.MultiblockEventHandler;
+import erogenousbeef.coreTR.multiblock.MultiblockServerTickHandler;
+import net.minecraftforge.common.MinecraftForge;
 import techreborn.achievement.TRAchievements;
 import techreborn.client.GuiHandler;
 import techreborn.compat.CompatManager;
@@ -57,6 +61,9 @@ public class Core {
         PacketHandler.setChannels(NetworkRegistry.INSTANCE.newChannel(ModInfo.MOD_ID + "_packets", new PacketHandler()));
         //Achievements
         TRAchievements.init();
+        //Multiblock events
+        MinecraftForge.EVENT_BUS.register(new MultiblockEventHandler());
+        FMLCommonHandler.instance().bus().register(new MultiblockServerTickHandler());
         LogHelper.info("Initialization Compleate");
     }
     
diff --git a/src/main/java/techreborn/blocks/BlockMachineCasing.java b/src/main/java/techreborn/blocks/BlockMachineCasing.java
index 76fc5bd9f..e8f0537eb 100644
--- a/src/main/java/techreborn/blocks/BlockMachineCasing.java
+++ b/src/main/java/techreborn/blocks/BlockMachineCasing.java
@@ -2,7 +2,7 @@ package techreborn.blocks;
 
 import cpw.mods.fml.relauncher.Side;
 import cpw.mods.fml.relauncher.SideOnly;
-import net.minecraft.block.BlockContainer;
+import erogenousbeef.coreTR.multiblock.BlockMultiblockBase;
 import net.minecraft.block.material.Material;
 import net.minecraft.client.renderer.texture.IIconRegister;
 import net.minecraft.creativetab.CreativeTabs;
@@ -19,7 +19,7 @@ import techreborn.tiles.TileMachineCasing;
 import java.util.List;
 import java.util.Random;
 
-public class BlockMachineCasing extends BlockContainer {
+public class BlockMachineCasing extends BlockMultiblockBase {
 	
 	public static final String[] types = new String[] {"Standard", "Reinforced", "Advanced"};
     private IIcon[] textures;
diff --git a/src/main/java/techreborn/multiblocks/MultiBlockCasing.java b/src/main/java/techreborn/multiblocks/MultiBlockCasing.java
new file mode 100644
index 000000000..42a9c5751
--- /dev/null
+++ b/src/main/java/techreborn/multiblocks/MultiBlockCasing.java
@@ -0,0 +1,123 @@
+package techreborn.multiblocks;
+
+import erogenousbeef.coreTR.multiblock.IMultiblockPart;
+import erogenousbeef.coreTR.multiblock.MultiblockControllerBase;
+import erogenousbeef.coreTR.multiblock.rectangular.RectangularMultiblockControllerBase;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.world.World;
+import techreborn.util.LogHelper;
+
+public class MultiBlockCasing extends RectangularMultiblockControllerBase {
+    public MultiBlockCasing(World world) {
+        super(world);
+    }
+
+    @Override
+    public void onAttachedPartWithMultiblockData(IMultiblockPart part, NBTTagCompound data) {
+
+    }
+
+    @Override
+    protected void onBlockAdded(IMultiblockPart newPart) {
+    }
+
+    @Override
+    protected void onBlockRemoved(IMultiblockPart oldPart) {
+
+    }
+
+    @Override
+    protected void onMachineAssembled() {
+        LogHelper.all("New multiblock created!");
+    }
+
+    @Override
+    protected void onMachineRestored() {
+
+    }
+
+    @Override
+    protected void onMachinePaused() {
+
+    }
+
+    @Override
+    protected void onMachineDisassembled() {
+
+    }
+
+    @Override
+    protected int getMinimumNumberOfBlocksForAssembledMachine() {
+        return 1;
+    }
+
+    @Override
+    protected int getMaximumXSize() {
+        return 3;
+    }
+
+    @Override
+    protected int getMaximumZSize() {
+        return 3;
+    }
+
+    @Override
+    protected int getMaximumYSize() {
+        return 4;
+    }
+
+    @Override
+    protected int getMinimumXSize() {
+        return 3;
+    }
+
+    @Override
+    protected int getMinimumYSize() {
+        return 4;
+    }
+
+    @Override
+    protected int getMinimumZSize() {
+        return 3;
+    }
+
+    @Override
+    protected void onAssimilate(MultiblockControllerBase assimilated) {
+
+    }
+
+    @Override
+    protected void onAssimilated(MultiblockControllerBase assimilator) {
+
+    }
+
+    @Override
+    protected boolean updateServer() {
+        return true;
+    }
+
+    @Override
+    protected void updateClient() {
+
+    }
+
+    @Override
+    public void writeToNBT(NBTTagCompound data) {
+
+    }
+
+    @Override
+    public void readFromNBT(NBTTagCompound data) {
+
+    }
+
+    @Override
+    public void formatDescriptionPacket(NBTTagCompound data) {
+
+    }
+
+    @Override
+    public void decodeDescriptionPacket(NBTTagCompound data) {
+
+    }
+}
diff --git a/src/main/java/techreborn/tiles/TileMachineCasing.java b/src/main/java/techreborn/tiles/TileMachineCasing.java
index 41e3b8686..2a58ccb5b 100644
--- a/src/main/java/techreborn/tiles/TileMachineCasing.java
+++ b/src/main/java/techreborn/tiles/TileMachineCasing.java
@@ -1,8 +1,11 @@
 package techreborn.tiles;
 
-import net.minecraft.tileentity.TileEntity;
+import erogenousbeef.coreTR.multiblock.MultiblockControllerBase;
+import erogenousbeef.coreTR.multiblock.MultiblockValidationException;
+import erogenousbeef.coreTR.multiblock.rectangular.RectangularMultiblockTileEntityBase;
+import techreborn.multiblocks.MultiBlockCasing;
 
-public class TileMachineCasing extends TileEntity {
+public class TileMachineCasing extends RectangularMultiblockTileEntityBase {
 
     @Override
     public boolean canUpdate() {
@@ -10,4 +13,48 @@ public class TileMachineCasing extends TileEntity {
         return false;
     }
 
+    @Override
+    public void onMachineActivated() {
+
+    }
+
+    @Override
+    public void onMachineDeactivated() {
+
+    }
+
+    @Override
+    public MultiblockControllerBase createNewMultiblock() {
+        return new MultiBlockCasing(worldObj);
+    }
+
+    @Override
+    public Class<? extends MultiblockControllerBase> getMultiblockControllerType() {
+        return MultiBlockCasing.class;
+    }
+
+    @Override
+    public void isGoodForFrame() throws MultiblockValidationException {
+
+    }
+
+    @Override
+    public void isGoodForSides() throws MultiblockValidationException {
+
+    }
+
+    @Override
+    public void isGoodForTop() throws MultiblockValidationException {
+
+    }
+
+    @Override
+    public void isGoodForBottom() throws MultiblockValidationException {
+
+    }
+
+    @Override
+    public void isGoodForInterior() throws MultiblockValidationException {
+
+    }
 }