diff --git a/Item.php b/Item.php
index <HASH>..<HASH> 100644
--- a/Item.php
+++ b/Item.php
@@ -42,5 +42,11 @@
      * @return int
      */
     public function getWeight();
+    
+    /**
+     * Item volume in mm^3
+     * @return int
+     */
+    public function getVolume();
 
   }
diff --git a/ItemList.php b/ItemList.php
index <HASH>..<HASH> 100644
--- a/ItemList.php
+++ b/ItemList.php
@@ -18,10 +18,7 @@
      * @see \SplMaxHeap::compare()
      */
     public function compare(Item $aItemA, Item $aItemB) {
-      $volumeA = $aItemA->getLength() * $aItemA->getWidth() * $aItemA->getDepth();
-      $volumeB = $aItemB->getLength() * $aItemB->getWidth() * $aItemB->getDepth();
-      
-      return $volumeA - $volumeB;
+      return $aItemA->getVolume() - $aItemB->getVolume();
     }
 
   }
Let implementing objects carry out volume calculation to allow for caching/storing of value