#3: moving labels to a separate class
#3: buggy labels for each zoom level
upd