#0002 Refactored Shape to be an independent object.