added fast bisect + fill algorithm