Added ShapeDrawer interface and singleton