Call progress callback in top level promise
Separate out TextLayerBuilder and Logger, and create a basic build system