Refactored the graphics system; this now favors aggregation over inheritance for code reuse