/**
  * Construct a model with the given PaintTool as start PaintTool
  **/
 internal Model(PaintTool initPaintTool, ColorTool initColorTool)
 {
     setUpFactories(initColorTool);
     currentFactory = Factories[initPaintTool.type];
     currentFactory.ChangePaintTool(initPaintTool, initColorTool);
     currentColorTool = initColorTool;
 }
 internal void ChangePaintTool(PaintTool newPaintTool)
 {
     ClearRenderQueue();
     Factories[newPaintTool.type].ChangePaintTool(newPaintTool, currentColorTool);
     currentFactory = Factories[newPaintTool.type];
 }
 //TODO see if logic for this could be done clearer
 internal abstract void ChangePaintTool(PaintTool newTool, ColorTool presentColorTool);
 /**
  * Apply the new tool to the Factory
  */
 internal override void ChangePaintTool(PaintTool newTreeTool, ColorTool presentColorTool)
 {
     TreeTool newTool = (TreeTool)newTreeTool; // TODO Is there any way TODO this without casting?
     treeAdded = false;
     this.presentTreeTool = newTool;
     this.presentColorTool = presentColorTool;
     this.growthSpeed = presentTreeTool.growthSpeed;
     growthCount = 0;
 }