updated source with partially working draw methods()