Changed the entire app to support multiple shapes with polymorphism and multi dispatch