Try using visitor pattern for drawing