Refactor internal drawing methods to use promises