refactoring Drawable to be more encapsulated and flexible, general bug fixes