todos:
 - include progress bar
 - add support for raster layers
 - optimize data structure
 - allow scaling of axes
 - add dialogs for changing colors
