diff --git a/src/main/java/net/minecraft/server/EntityEgg.java b/src/main/java/net/minecraft/server/EntityEgg.java
index 167c1e8482..afa0bf8cfb 100644
--- a/src/main/java/net/minecraft/server/EntityEgg.java
+++ b/src/main/java/net/minecraft/server/EntityEgg.java
@@ -2,7 +2,7 @@ package net.minecraft.server;
 
 // CraftBukkit start
 import org.bukkit.Location;
-import org.bukkit.entity.Animals;
+import org.bukkit.entity.Ageable;
 import org.bukkit.entity.EntityType;
 import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
 import org.bukkit.event.player.PlayerEggThrowEvent;
@@ -51,8 +51,8 @@ public class EntityEgg extends EntityProjectile {
             for (int k = 0; k < numHatching; k++) {
                 org.bukkit.entity.Entity entity = world.getWorld().spawn(new Location(world.getWorld(), this.locX, this.locY, this.locZ, this.yaw, 0.0F), hatchingType.getEntityClass(), SpawnReason.EGG);
 
-                if (entity instanceof Animals) {
-                    ((Animals) entity).setBaby();
+                if (entity instanceof Ageable) {
+                    ((Ageable) entity).setBaby();
                 }
             }
         }
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAgeable.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAgeable.java
new file mode 100644
index 0000000000..ecd630c591
--- /dev/null
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAgeable.java
@@ -0,0 +1,67 @@
+package org.bukkit.craftbukkit.entity;
+
+import net.minecraft.server.EntityAgeable;
+
+import org.bukkit.craftbukkit.CraftServer;
+import org.bukkit.entity.Ageable;
+
+public class CraftAgeable extends CraftCreature implements Ageable {
+    public CraftAgeable(CraftServer server, EntityAgeable entity) {
+        super(server, entity);
+    }
+
+    public int getAge() {
+        return getHandle().getAge();
+    }
+
+    public void setAge(int age) {
+        getHandle().setAge(age);
+    }
+
+    public void setAgeLock(boolean lock) {
+        getHandle().ageLocked = lock;
+    }
+
+    public boolean getAgeLock() {
+        return getHandle().ageLocked;
+    }
+
+    public void setBaby() {
+        if (isAdult()) {
+            setAge(-24000);
+        }
+    }
+
+    public void setAdult() {
+        if (!isAdult()) {
+            setAge(0);
+        }
+    }
+
+    public boolean isAdult() {
+        return getAge() >= 0;
+    }
+
+
+    public boolean canBreed() {
+        return getAge() == 0;
+    }
+
+    public void setBreed(boolean breed) {
+        if (breed) {
+            setAge(0);
+        } else if (isAdult()) {
+            setAge(6000);
+        }
+    }
+    
+    @Override
+    public EntityAgeable getHandle() {
+        return (EntityAgeable) entity;
+    }
+    
+    @Override
+    public String toString() {
+        return "CraftAgeable";
+    }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java
index 4e229f5733..4b9b078305 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAnimals.java
@@ -4,61 +4,17 @@ import net.minecraft.server.EntityAnimal;
 import org.bukkit.craftbukkit.CraftServer;
 import org.bukkit.entity.Animals;
 
-public class CraftAnimals extends CraftCreature implements Animals {
+public class CraftAnimals extends CraftAgeable implements Animals {
 
     public CraftAnimals(CraftServer server, EntityAnimal entity) {
         super(server, entity);
     }
 
-    public int getAge() {
-        return getHandle().getAge();
-    }
-
-    public void setAge(int age) {
-        getHandle().setAge(age);
-    }
-
     @Override
     public EntityAnimal getHandle() {
         return (EntityAnimal) entity;
     }
 
-    public void setAgeLock(boolean lock) {
-        getHandle().ageLocked = lock;
-    }
-
-    public boolean getAgeLock() {
-        return getHandle().ageLocked;
-    }
-
-    public void setBaby() {
-        if (isAdult()) {
-            setAge(-24000);
-        }
-    }
-
-    public void setAdult() {
-        if (!isAdult()) {
-            setAge(0);
-        }
-    }
-
-    public boolean isAdult() {
-        return getAge() >= 0;
-    }
-
-    public boolean canBreed() {
-        return getAge() == 0;
-    }
-
-    public void setBreed(boolean breed) {
-        if (breed) {
-            setAge(0);
-        } else if (isAdult()) {
-            setAge(6000);
-        }
-    }
-
     @Override
     public String toString() {
         return "CraftAnimals";
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
index 7cf5e4b720..398029b90c 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java
@@ -6,7 +6,7 @@ import org.bukkit.craftbukkit.CraftServer;
 import org.bukkit.entity.EntityType;
 import org.bukkit.entity.Villager;
 
-public class CraftVillager extends CraftCreature implements Villager {
+public class CraftVillager extends CraftAgeable implements Villager {
     public CraftVillager(CraftServer server, EntityVillager entity) {
         super(server, entity);
     }