refactored shapes to all inherit from base class to drastically reduce duplicate code. Interfaces wasn't the way to go.