From 19ca54add7320a68a3226665c037a8c824ae92e4 Mon Sep 17 00:00:00 2001
From: jan <janp@stanford.edu>
Date: Sun, 10 Jul 2016 17:51:01 -0700
Subject: [PATCH] operations implemented

---
 .idea/workspace.xml       | 745 ++++++++++++++++++++------------------
 src/ClickGetter.java      |  40 ++
 src/Ellipse.java          |   7 +-
 src/EuglenaApplet.java    |  25 +-
 src/Expand.java           |  96 +++++
 src/ExpandClass.java      |  84 -----
 src/Line.java             |   4 +-
 src/Menu.java             |  33 +-
 src/ProjectorApplet.java  |  34 +-
 src/ProjectorCommand.java |   8 +-
 src/Rectangle.java        |   4 +-
 src/Rotate.java           |  76 ++++
 src/RotateClass.java      |  68 ----
 src/Shrink.java           |  90 +++++
 src/ShrinkClass.java      |  93 -----
 src/Translate.java        | 111 ++++++
 src/TranslateClass.java   |  99 -----
 src/Triangle.java         |   4 +-
 18 files changed, 879 insertions(+), 742 deletions(-)
 create mode 100644 src/Expand.java
 delete mode 100644 src/ExpandClass.java
 create mode 100644 src/Rotate.java
 delete mode 100644 src/RotateClass.java
 create mode 100644 src/Shrink.java
 delete mode 100644 src/ShrinkClass.java
 create mode 100644 src/Translate.java
 delete mode 100644 src/TranslateClass.java

diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 75e81d8..2201cd8 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,18 +2,24 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="6e752a8c-6cb9-4ef9-9031-0329ce15fcb4" name="Default" comment="Ellipse can be drawn...">
-      <change type="DELETED" beforePath="$PROJECT_DIR$/src/Procedure.java" afterPath="" />
-      <change type="DELETED" beforePath="$PROJECT_DIR$/src/clearDisplay.java" afterPath="" />
-      <change type="MOVED" beforePath="$PROJECT_DIR$/src/LineClass.java" afterPath="$PROJECT_DIR$/src/Line.java" />
-      <change type="MOVED" beforePath="$PROJECT_DIR$/src/RectangleClass.java" afterPath="$PROJECT_DIR$/src/Rectangle.java" />
-      <change type="MOVED" beforePath="$PROJECT_DIR$/src/TriangleClass.java" afterPath="$PROJECT_DIR$/src/Triangle.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/compiler.xml" afterPath="$PROJECT_DIR$/.idea/compiler.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/Expand.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/Rotate.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/Shrink.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/Translate.java" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/src/ExpandClass.java" afterPath="" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/src/RotateClass.java" afterPath="" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/src/ShrinkClass.java" afterPath="" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/src/TranslateClass.java" afterPath="" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/Calibrator.java" afterPath="$PROJECT_DIR$/src/Calibrator.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/ClickGetter.java" afterPath="$PROJECT_DIR$/src/ClickGetter.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/Ellipse.java" afterPath="$PROJECT_DIR$/src/Ellipse.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/EuglenaApplet.java" afterPath="$PROJECT_DIR$/src/EuglenaApplet.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/Line.java" afterPath="$PROJECT_DIR$/src/Line.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/Menu.java" afterPath="$PROJECT_DIR$/src/Menu.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/ProjectorApplet.java" afterPath="$PROJECT_DIR$/src/ProjectorApplet.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/ProjectorCommand.java" afterPath="$PROJECT_DIR$/src/ProjectorCommand.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/Rectangle.java" afterPath="$PROJECT_DIR$/src/Rectangle.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/Triangle.java" afterPath="$PROJECT_DIR$/src/Triangle.java" />
     </list>
     <ignored path="processing-intellij.iws" />
     <ignored path=".idea/workspace.xml" />
@@ -37,8 +43,8 @@
             <file leaf-file-name="euglena_basic_stimuli.java" pinned="false" current-in-tab="true">
               <entry file="file://$PROJECT_DIR$/src/euglena_basic_stimuli.java">
                 <provider selected="true" editor-type-id="text-editor">
-                  <state relative-caret-position="193">
-                    <caret line="59" column="15" selection-start-line="59" selection-start-column="15" selection-end-line="59" selection-end-column="15" />
+                  <state relative-caret-position="432">
+                    <caret line="83" column="4" selection-start-line="83" selection-start-column="0" selection-end-line="83" selection-end-column="4" />
                     <folding>
                       <element signature="imports" expanded="true" />
                     </folding>
@@ -57,60 +63,49 @@
   </component>
   <component name="FileEditorManager">
     <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
-      <file leaf-file-name="EuglenaApplet.java" pinned="false" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/src/EuglenaApplet.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="889">
-              <caret line="105" column="11" selection-start-line="105" selection-start-column="11" selection-end-line="105" selection-end-column="11" />
-              <folding>
-                <element signature="imports" expanded="true" />
-                <element signature="e#474#475#0" expanded="true" />
-                <element signature="e#519#520#0" expanded="true" />
-                <element signature="e#2486#2487#0" expanded="true" />
-                <element signature="e#2529#2530#0" expanded="true" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
       <file leaf-file-name="ProjectorApplet.java" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/ProjectorApplet.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="648">
-              <caret line="60" column="33" selection-start-line="60" selection-start-column="33" selection-end-line="60" selection-end-column="33" />
+            <state relative-caret-position="1530">
+              <caret line="97" column="0" selection-start-line="97" selection-start-column="0" selection-end-line="97" selection-end-column="0" />
               <folding>
                 <element signature="imports" expanded="true" />
-                <element signature="e#549#550#0" expanded="true" />
-                <element signature="e#608#609#0" expanded="true" />
-                <element signature="e#1255#1256#0" expanded="true" />
-                <element signature="e#1282#1283#0" expanded="true" />
-                <element signature="e#1333#1334#0" expanded="true" />
-                <element signature="e#1373#1374#0" expanded="true" />
-                <element signature="e#1404#1405#0" expanded="true" />
-                <element signature="e#1434#1435#0" expanded="true" />
+                <element signature="e#545#546#0" expanded="true" />
+                <element signature="e#604#605#0" expanded="true" />
+                <element signature="e#1739#1740#0" expanded="true" />
+                <element signature="e#1779#1780#0" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="Calibrator.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/Calibrator.java">
+      <file leaf-file-name="Ellipse.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/Ellipse.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="396">
-              <caret line="101" column="29" selection-start-line="101" selection-start-column="29" selection-end-line="101" selection-end-column="29" />
+            <state relative-caret-position="450">
+              <caret line="58" column="0" selection-start-line="58" selection-start-column="0" selection-end-line="79" selection-end-column="5" />
               <folding>
-                <element signature="e#0#3821#0" expanded="true" />
                 <element signature="imports" expanded="true" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="LEDControl.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/LEDControl.java">
+      <file leaf-file-name="Rectangle.java" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/Rectangle.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="306">
+              <caret line="39" column="37" selection-start-line="39" selection-start-column="37" selection-end-line="39" selection-end-column="37" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="Triangle.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/Triangle.java">
           <provider selected="true" editor-type-id="text-editor">
             <state relative-caret-position="252">
-              <caret line="7" column="20" selection-start-line="7" selection-start-column="20" selection-end-line="7" selection-end-column="20" />
+              <caret line="50" column="0" selection-start-line="50" selection-start-column="0" selection-end-line="50" selection-end-column="0" />
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -118,11 +113,61 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="Menu.java" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/src/Menu.java">
+      <file leaf-file-name="shrinkingCircle.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/shrinkingCircle.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="8424">
-              <caret line="234" column="26" selection-start-line="234" selection-start-column="26" selection-end-line="234" selection-end-column="26" />
+            <state relative-caret-position="630">
+              <caret line="35" column="7" selection-start-line="35" selection-start-column="7" selection-end-line="35" selection-end-column="7" />
+              <folding>
+                <element signature="e#0#1183#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="Rotate.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/Rotate.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="540">
+              <caret line="30" column="52" selection-start-line="30" selection-start-column="52" selection-end-line="30" selection-end-column="52" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="Shrink.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/Shrink.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="576">
+              <caret line="39" column="34" selection-start-line="39" selection-start-column="34" selection-end-line="39" selection-end-column="34" />
+              <folding>
+                <element signature="imports" expanded="true" />
+                <element signature="e#821#822#0" expanded="true" />
+                <element signature="e#869#870#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="Translate.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/Translate.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="542">
+              <caret line="94" column="29" selection-start-line="94" selection-start-column="29" selection-end-line="94" selection-end-column="29" />
+              <folding>
+                <element signature="imports" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="Expand.java" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/Expand.java">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="360">
+              <caret line="20" column="33" selection-start-line="20" selection-start-column="33" selection-end-line="20" selection-end-column="33" />
               <folding>
                 <element signature="imports" expanded="true" />
               </folding>
@@ -135,8 +180,8 @@
   <component name="FileTemplateManagerImpl">
     <option name="RECENT_TEMPLATES">
       <list>
-        <option value="Class" />
         <option value="Interface" />
+        <option value="Class" />
       </list>
     </option>
   </component>
@@ -161,29 +206,33 @@
         <option value="$PROJECT_DIR$/src/Camera.java" />
         <option value="$PROJECT_DIR$/src/EllipseClass.java" />
         <option value="$PROJECT_DIR$/src/Command.java" />
-        <option value="$PROJECT_DIR$/src/ProjectorCommand.java" />
         <option value="$PROJECT_DIR$/src/MouseGetter.java" />
-        <option value="$PROJECT_DIR$/src/ClickGetter.java" />
         <option value="$PROJECT_DIR$/src/Procedure.java" />
         <option value="$PROJECT_DIR$/src/LEDControl.java" />
         <option value="$PROJECT_DIR$/src/euglena_basic_stimuli.java" />
-        <option value="$PROJECT_DIR$/src/Ellipse.java" />
-        <option value="$PROJECT_DIR$/src/Rectangle.java" />
         <option value="$PROJECT_DIR$/src/Calibrator.java" />
-        <option value="$PROJECT_DIR$/src/Line.java" />
-        <option value="$PROJECT_DIR$/src/Triangle.java" />
         <option value="$PROJECT_DIR$/src/clearDisplay.java" />
-        <option value="$PROJECT_DIR$/src/ProjectorApplet.java" />
         <option value="$PROJECT_DIR$/src/Menu.java" />
         <option value="$PROJECT_DIR$/src/EuglenaApplet.java" />
+        <option value="$PROJECT_DIR$/src/ClickGetter.java" />
+        <option value="$PROJECT_DIR$/src/Line.java" />
+        <option value="$PROJECT_DIR$/src/Ellipse.java" />
+        <option value="$PROJECT_DIR$/src/Rectangle.java" />
+        <option value="$PROJECT_DIR$/src/Triangle.java" />
+        <option value="$PROJECT_DIR$/src/ProjectorCommand.java" />
+        <option value="$PROJECT_DIR$/src/RotateClass.java" />
+        <option value="$PROJECT_DIR$/src/ProjectorApplet.java" />
+        <option value="$PROJECT_DIR$/src/Shrink.java" />
+        <option value="$PROJECT_DIR$/src/Rotate.java" />
+        <option value="$PROJECT_DIR$/src/Translate.java" />
+        <option value="$PROJECT_DIR$/src/Expand.java" />
       </list>
     </option>
   </component>
   <component name="ProjectFrameBounds">
-    <option name="x" value="-2" />
-    <option name="y" value="-2" />
-    <option name="width" value="1602" />
-    <option name="height" value="1804" />
+    <option name="x" value="1920" />
+    <option name="width" value="1280" />
+    <option name="height" value="1440" />
   </component>
   <component name="ProjectLevelVcsManager" settingsEditedManually="true">
     <OptionsSetting value="true" id="Add" />
@@ -196,7 +245,7 @@
     <ConfirmationsSetting value="0" id="Remove" />
   </component>
   <component name="ProjectView">
-    <navigator proportions="" version="1">
+    <navigator currentView="ProjectPane" proportions="" version="1">
       <flattenPackages />
       <showMembers />
       <showModules />
@@ -209,7 +258,45 @@
       <manualOrder />
       <foldersAlwaysOnTop value="true" />
     </navigator>
-    <panes />
+    <panes>
+      <pane id="Scope" />
+      <pane id="ProjectPane">
+        <subPane>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="processing-intellij" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="processing-intellij" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="eug3" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="processing-intellij" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="eug3" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="src" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+      <pane id="Scratches" />
+      <pane id="PackagesPane" />
+    </panes>
   </component>
   <component name="PropertiesComponent">
     <property name="last_opened_file_path" value="$PROJECT_DIR$" />
@@ -243,62 +330,14 @@
       <envs />
       <method />
     </configuration>
-    <configuration default="true" type="GradleRunConfiguration" factoryName="Gradle">
-      <ExternalSystemSettings>
-        <option name="executionName" />
-        <option name="externalProjectPath" />
-        <option name="externalSystemIdString" value="GRADLE" />
-        <option name="scriptParameters" />
-        <option name="taskDescriptions">
-          <list />
-        </option>
-        <option name="taskNames">
-          <list />
-        </option>
-        <option name="vmOptions" />
-      </ExternalSystemSettings>
-      <method />
-    </configuration>
-    <configuration default="true" type="JUnit" factoryName="JUnit">
-      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
-      <module name="" />
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" />
-      <option name="PACKAGE_NAME" />
-      <option name="MAIN_CLASS_NAME" />
-      <option name="METHOD_NAME" />
-      <option name="TEST_OBJECT" value="class" />
-      <option name="VM_PARAMETERS" />
-      <option name="PARAMETERS" />
-      <option name="WORKING_DIRECTORY" />
-      <option name="ENV_VARIABLES" />
-      <option name="PASS_PARENT_ENVS" value="true" />
-      <option name="TEST_SEARCH_SCOPE">
-        <value defaultName="singleModule" />
+    <configuration default="true" type="CargoCommandRunConfiguration" factoryName="Cargo Command" show_console_on_std_err="false" show_console_on_std_out="false">
+      <option name="additionalArguments" value="" />
+      <option name="command" value="run" />
+      <option name="environmentVariables">
+        <map />
       </option>
-      <envs />
-      <patterns />
-      <method />
-    </configuration>
-    <configuration default="true" type="JUnitTestDiscovery" factoryName="JUnit Test Discovery" changeList="All">
-      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
-      <module name="" />
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" />
-      <option name="PACKAGE_NAME" />
-      <option name="MAIN_CLASS_NAME" />
-      <option name="METHOD_NAME" />
-      <option name="TEST_OBJECT" value="class" />
-      <option name="VM_PARAMETERS" />
-      <option name="PARAMETERS" />
-      <option name="WORKING_DIRECTORY" />
-      <option name="ENV_VARIABLES" />
-      <option name="PASS_PARENT_ENVS" value="true" />
-      <option name="TEST_SEARCH_SCOPE">
-        <value defaultName="singleModule" />
-      </option>
-      <envs />
-      <patterns />
+      <option name="printBacktrace" value="false" />
+      <module name="processing-intellij" />
       <method />
     </configuration>
     <configuration default="true" type="JarApplication" factoryName="JAR Application">
@@ -355,62 +394,6 @@
       <option name="PORT" value="5005" />
       <method />
     </configuration>
-    <configuration default="true" type="TestNG" factoryName="TestNG">
-      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
-      <module name="" />
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" />
-      <option name="SUITE_NAME" />
-      <option name="PACKAGE_NAME" />
-      <option name="MAIN_CLASS_NAME" />
-      <option name="METHOD_NAME" />
-      <option name="GROUP_NAME" />
-      <option name="TEST_OBJECT" value="CLASS" />
-      <option name="VM_PARAMETERS" value="-ea" />
-      <option name="PARAMETERS" />
-      <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
-      <option name="OUTPUT_DIRECTORY" />
-      <option name="ANNOTATION_TYPE" />
-      <option name="ENV_VARIABLES" />
-      <option name="PASS_PARENT_ENVS" value="true" />
-      <option name="TEST_SEARCH_SCOPE">
-        <value defaultName="singleModule" />
-      </option>
-      <option name="USE_DEFAULT_REPORTERS" value="false" />
-      <option name="PROPERTIES_FILE" />
-      <envs />
-      <properties />
-      <listeners />
-      <method />
-    </configuration>
-    <configuration default="true" type="TestNGTestDiscovery" factoryName="TestNG Test Discovery" changeList="All">
-      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
-      <module name="" />
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" />
-      <option name="SUITE_NAME" />
-      <option name="PACKAGE_NAME" />
-      <option name="MAIN_CLASS_NAME" />
-      <option name="METHOD_NAME" />
-      <option name="GROUP_NAME" />
-      <option name="TEST_OBJECT" value="CLASS" />
-      <option name="VM_PARAMETERS" />
-      <option name="PARAMETERS" />
-      <option name="WORKING_DIRECTORY" />
-      <option name="OUTPUT_DIRECTORY" />
-      <option name="ANNOTATION_TYPE" />
-      <option name="ENV_VARIABLES" />
-      <option name="PASS_PARENT_ENVS" value="true" />
-      <option name="TEST_SEARCH_SCOPE">
-        <value defaultName="singleModule" />
-      </option>
-      <option name="USE_DEFAULT_REPORTERS" value="false" />
-      <option name="PROPERTIES_FILE" />
-      <envs />
-      <properties />
-      <listeners />
-      <method />
-    </configuration>
     <configuration default="false" name="ExampleApplet" type="Application" factoryName="Application">
       <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
       <option name="MAIN_CLASS_NAME" value="EuglenaApplet" />
@@ -465,29 +448,29 @@
     <servers />
   </component>
   <component name="ToolWindowManager">
-    <frame x="-2" y="-2" width="1602" height="1804" extended-state="4" />
+    <frame x="1920" y="0" width="1280" height="1440" extended-state="4" />
     <editor active="true" />
     <layout>
+      <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.18503937" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
       <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4006192" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
       <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="true" content_ui="tabs" />
-      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.26811147" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
-      <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.18503937" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32879257" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2675112" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.2159031" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
       <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="true" content_ui="tabs" />
-      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39940387" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
       <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32879257" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
     </layout>
     <layout-to-restore>
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
@@ -536,34 +519,16 @@
     <option name="FILTER_TARGETS" value="false" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/src/EuglenaApplet.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="630">
-          <caret line="39" column="5" selection-start-line="39" selection-start-column="5" selection-end-line="39" selection-end-column="5" />
-          <folding>
-            <element signature="imports" expanded="true" />
-            <element signature="e#474#475#0" expanded="true" />
-            <element signature="e#519#520#0" expanded="true" />
-            <element signature="e#2486#2487#0" expanded="true" />
-            <element signature="e#2529#2530#0" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/ProjectorApplet.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="558">
           <caret line="33" column="18" selection-start-line="33" selection-start-column="8" selection-end-line="33" selection-end-column="18" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#549#550#0" expanded="true" />
-            <element signature="e#608#609#0" expanded="true" />
-            <element signature="e#1255#1256#0" expanded="true" />
-            <element signature="e#1282#1283#0" expanded="true" />
-            <element signature="e#1333#1334#0" expanded="true" />
-            <element signature="e#1373#1374#0" expanded="true" />
-            <element signature="e#1404#1405#0" expanded="true" />
-            <element signature="e#1434#1435#0" expanded="true" />
+            <element signature="e#545#546#0" expanded="true" />
+            <element signature="e#604#605#0" expanded="true" />
+            <element signature="e#1739#1740#0" expanded="true" />
+            <element signature="e#1779#1780#0" expanded="true" />
           </folding>
         </state>
       </provider>
@@ -626,10 +591,10 @@
           <caret line="40" column="35" selection-start-line="40" selection-start-column="35" selection-end-line="40" selection-end-column="35" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#474#475#0" expanded="true" />
-            <element signature="e#519#520#0" expanded="true" />
-            <element signature="e#2486#2487#0" expanded="true" />
-            <element signature="e#2529#2530#0" expanded="true" />
+            <element signature="e#2317#2318#0" expanded="true" />
+            <element signature="e#2360#2361#0" expanded="true" />
+            <element signature="e#2415#2416#0" expanded="true" />
+            <element signature="e#2458#2459#0" expanded="true" />
           </folding>
         </state>
       </provider>
@@ -665,10 +630,10 @@
           <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#474#475#0" expanded="true" />
-            <element signature="e#519#520#0" expanded="true" />
-            <element signature="e#2486#2487#0" expanded="true" />
-            <element signature="e#2529#2530#0" expanded="true" />
+            <element signature="e#2317#2318#0" expanded="true" />
+            <element signature="e#2360#2361#0" expanded="true" />
+            <element signature="e#2415#2416#0" expanded="true" />
+            <element signature="e#2458#2459#0" expanded="true" />
           </folding>
         </state>
       </provider>
@@ -679,10 +644,10 @@
           <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#474#475#0" expanded="true" />
-            <element signature="e#519#520#0" expanded="true" />
-            <element signature="e#2486#2487#0" expanded="true" />
-            <element signature="e#2529#2530#0" expanded="true" />
+            <element signature="e#2317#2318#0" expanded="true" />
+            <element signature="e#2360#2361#0" expanded="true" />
+            <element signature="e#2415#2416#0" expanded="true" />
+            <element signature="e#2458#2459#0" expanded="true" />
           </folding>
         </state>
       </provider>
@@ -693,10 +658,10 @@
           <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#474#475#0" expanded="true" />
-            <element signature="e#519#520#0" expanded="true" />
-            <element signature="e#2486#2487#0" expanded="true" />
-            <element signature="e#2529#2530#0" expanded="true" />
+            <element signature="e#2317#2318#0" expanded="true" />
+            <element signature="e#2360#2361#0" expanded="true" />
+            <element signature="e#2415#2416#0" expanded="true" />
+            <element signature="e#2458#2459#0" expanded="true" />
           </folding>
         </state>
       </provider>
@@ -707,10 +672,10 @@
           <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#474#475#0" expanded="true" />
-            <element signature="e#519#520#0" expanded="true" />
-            <element signature="e#2486#2487#0" expanded="true" />
-            <element signature="e#2529#2530#0" expanded="true" />
+            <element signature="e#2317#2318#0" expanded="true" />
+            <element signature="e#2360#2361#0" expanded="true" />
+            <element signature="e#2415#2416#0" expanded="true" />
+            <element signature="e#2458#2459#0" expanded="true" />
           </folding>
         </state>
       </provider>
@@ -721,10 +686,10 @@
           <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#474#475#0" expanded="true" />
-            <element signature="e#519#520#0" expanded="true" />
-            <element signature="e#2486#2487#0" expanded="true" />
-            <element signature="e#2529#2530#0" expanded="true" />
+            <element signature="e#2317#2318#0" expanded="true" />
+            <element signature="e#2360#2361#0" expanded="true" />
+            <element signature="e#2415#2416#0" expanded="true" />
+            <element signature="e#2458#2459#0" expanded="true" />
           </folding>
         </state>
       </provider>
@@ -735,10 +700,10 @@
           <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#474#475#0" expanded="true" />
-            <element signature="e#519#520#0" expanded="true" />
-            <element signature="e#2486#2487#0" expanded="true" />
-            <element signature="e#2529#2530#0" expanded="true" />
+            <element signature="e#2317#2318#0" expanded="true" />
+            <element signature="e#2360#2361#0" expanded="true" />
+            <element signature="e#2415#2416#0" expanded="true" />
+            <element signature="e#2458#2459#0" expanded="true" />
           </folding>
         </state>
       </provider>
@@ -793,22 +758,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/ProjectorCommand.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="36">
-          <caret line="1" column="4" selection-start-line="1" selection-start-column="4" selection-end-line="1" selection-end-column="4" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/ClickGetter.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="36">
-          <caret line="1" column="42" selection-start-line="1" selection-start-column="42" selection-end-line="1" selection-end-column="42" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="jar://$PROJECT_DIR$/lib/core.jar!/processing/core/PApplet.class">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="812">
@@ -817,101 +766,26 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/Procedure.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="36">
-          <caret line="1" column="17" selection-start-line="1" selection-start-column="17" selection-end-line="1" selection-end-column="17" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/Presets.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="72">
-          <caret line="30" column="6" selection-start-line="30" selection-start-column="6" selection-end-line="30" selection-end-column="6" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/euglena_basic_stimuli.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="193">
-          <caret line="59" column="15" selection-start-line="59" selection-start-column="15" selection-end-line="59" selection-end-column="15" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/Line.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="961">
-          <caret line="74" column="0" selection-start-line="74" selection-start-column="0" selection-end-line="74" selection-end-column="0" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/Triangle.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="849">
-          <caret line="29" column="27" selection-start-line="29" selection-start-column="27" selection-end-line="29" selection-end-column="27" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Procedure.java" />
     <entry file="file://$PROJECT_DIR$/src/testing.java">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="180">
           <caret line="5" column="10" selection-start-line="5" selection-start-column="10" selection-end-line="5" selection-end-column="10" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/clearDisplay.java" />
+    <entry file="jar:///usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar!/java/lang/Integer.class">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1015">
+          <caret line="201" column="5" selection-start-line="201" selection-start-column="5" selection-end-line="201" selection-end-column="5" />
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/Ellipse.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="288">
-          <caret line="8" column="20" selection-start-line="0" selection-start-column="0" selection-end-line="82" selection-end-column="0" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/Rectangle.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/clearDisplay.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="144">
-          <caret line="4" column="0" selection-start-line="4" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/src/Menu.java">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="8424">
-          <caret line="234" column="26" selection-start-line="234" selection-start-column="26" selection-end-line="234" selection-end-column="26" />
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/LEDControl.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="252">
+        <state relative-caret-position="126">
           <caret line="7" column="20" selection-start-line="7" selection-start-column="20" selection-end-line="7" selection-end-column="20" />
           <folding>
             <element signature="imports" expanded="true" />
@@ -919,9 +793,19 @@
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/src/Menu.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="396">
+          <caret line="190" column="46" selection-start-line="190" selection-start-column="46" selection-end-line="190" selection-end-column="46" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/src/Calibrator.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="396">
+        <state relative-caret-position="416">
           <caret line="101" column="29" selection-start-line="101" selection-start-column="29" selection-end-line="101" selection-end-column="29" />
           <folding>
             <element signature="e#0#3821#0" expanded="true" />
@@ -930,38 +814,199 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/ProjectorApplet.java">
+    <entry file="file://$PROJECT_DIR$/src/Line.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="648">
-          <caret line="60" column="33" selection-start-line="60" selection-start-column="33" selection-end-line="60" selection-end-column="33" />
+        <state relative-caret-position="740">
+          <caret line="68" column="47" selection-start-line="68" selection-start-column="47" selection-end-line="68" selection-end-column="47" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/euglena_basic_stimuli.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="432">
+          <caret line="83" column="4" selection-start-line="83" selection-start-column="0" selection-end-line="83" selection-end-column="4" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#549#550#0" expanded="true" />
-            <element signature="e#608#609#0" expanded="true" />
-            <element signature="e#1255#1256#0" expanded="true" />
-            <element signature="e#1282#1283#0" expanded="true" />
-            <element signature="e#1333#1334#0" expanded="true" />
-            <element signature="e#1373#1374#0" expanded="true" />
-            <element signature="e#1404#1405#0" expanded="true" />
-            <element signature="e#1434#1435#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/src/EuglenaApplet.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="889">
-          <caret line="105" column="11" selection-start-line="105" selection-start-column="11" selection-end-line="105" selection-end-column="11" />
+        <state relative-caret-position="918">
+          <caret line="55" column="44" selection-start-line="55" selection-start-column="39" selection-end-line="55" selection-end-column="44" />
           <folding>
             <element signature="imports" expanded="true" />
-            <element signature="e#474#475#0" expanded="true" />
-            <element signature="e#519#520#0" expanded="true" />
-            <element signature="e#2486#2487#0" expanded="true" />
-            <element signature="e#2529#2530#0" expanded="true" />
+            <element signature="e#2317#2318#0" expanded="true" />
+            <element signature="e#2360#2361#0" expanded="true" />
+            <element signature="e#2415#2416#0" expanded="true" />
+            <element signature="e#2458#2459#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/src/ClickGetter.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="540">
+          <caret line="30" column="2" selection-start-line="30" selection-start-column="2" selection-end-line="30" selection-end-column="2" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/ProjectorCommand.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="162">
+          <caret line="9" column="0" selection-start-line="9" selection-start-column="0" selection-end-line="9" selection-end-column="0" />
+          <folding>
+            <element signature="e#206#207#0" expanded="true" />
+            <element signature="e#236#237#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Presets.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="36">
+          <caret line="30" column="6" selection-start-line="30" selection-start-column="6" selection-end-line="30" selection-end-column="6" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Ellipse.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="450">
+          <caret line="58" column="0" selection-start-line="58" selection-start-column="0" selection-end-line="79" selection-end-column="5" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/ShrinkClass.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-36">
+          <caret line="33" column="31" selection-start-line="33" selection-start-column="21" selection-end-line="33" selection-end-column="31" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/RotateClass.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="504">
+          <caret line="28" column="1" selection-start-line="0" selection-start-column="0" selection-end-line="68" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/ProjectorApplet.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1530">
+          <caret line="97" column="0" selection-start-line="97" selection-start-column="0" selection-end-line="97" selection-end-column="0" />
+          <folding>
+            <element signature="imports" expanded="true" />
+            <element signature="e#545#546#0" expanded="true" />
+            <element signature="e#604#605#0" expanded="true" />
+            <element signature="e#1739#1740#0" expanded="true" />
+            <element signature="e#1779#1780#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/TranslateClass.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="90">
+          <caret line="35" column="1" selection-start-line="0" selection-start-column="0" selection-end-line="99" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/ExpandClass.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="414">
+          <caret line="25" column="42" selection-start-line="0" selection-start-column="0" selection-end-line="84" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/merge.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="828">
+          <caret line="46" column="58" selection-start-line="46" selection-start-column="58" selection-end-line="46" selection-end-column="58" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Expand.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="360">
+          <caret line="20" column="33" selection-start-line="20" selection-start-column="33" selection-end-line="20" selection-end-column="33" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Translate.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="542">
+          <caret line="94" column="29" selection-start-line="94" selection-start-column="29" selection-end-line="94" selection-end-column="29" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Shrink.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="576">
+          <caret line="39" column="34" selection-start-line="39" selection-start-column="34" selection-end-line="39" selection-end-column="34" />
+          <folding>
+            <element signature="imports" expanded="true" />
+            <element signature="e#821#822#0" expanded="true" />
+            <element signature="e#869#870#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Rotate.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="540">
+          <caret line="30" column="52" selection-start-line="30" selection-start-column="52" selection-end-line="30" selection-end-column="52" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/shrinkingCircle.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="630">
+          <caret line="35" column="7" selection-start-line="35" selection-start-column="7" selection-end-line="35" selection-end-column="7" />
+          <folding>
+            <element signature="e#0#1183#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Triangle.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="252">
+          <caret line="50" column="0" selection-start-line="50" selection-start-column="0" selection-end-line="50" selection-end-column="0" />
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Rectangle.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="306">
+          <caret line="39" column="37" selection-start-line="39" selection-start-column="37" selection-end-line="39" selection-end-column="37" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
   </component>
   <component name="masterDetails">
     <states>
diff --git a/src/ClickGetter.java b/src/ClickGetter.java
index db9589e..57871d2 100644
--- a/src/ClickGetter.java
+++ b/src/ClickGetter.java
@@ -1,3 +1,43 @@
 public interface ClickGetter {
     boolean click(int mouseX, int mouseY);
 }
+
+
+//public interface Shape {
+//    public int numVertices();
+//}
+//
+//
+//class Circle2 implements Shape {
+//    Circle2() {
+//        blah;
+//    }
+//
+//    int numVertices() {
+//        return 0;
+//    }
+//
+//    void expand() {
+//        blah2;
+//    }
+//}
+//
+//class Square implements Shape {
+//    int numVertices() {
+//        return 4;
+//    }
+//}
+//
+//
+//Shape g = new Circle2();
+////g.expand(); // bad
+//println(g.numVertices()); //good
+//g = new Square();
+//println(g.numVertices());
+//
+//void printNumberOfVertices(Shape s) {
+//    println(s.numVertices());
+//}
+//
+//printNumberOfVertices(new Circle2());
+//printNumberOfVertices(new Square());
diff --git a/src/Ellipse.java b/src/Ellipse.java
index b19a6ca..ccdd118 100644
--- a/src/Ellipse.java
+++ b/src/Ellipse.java
@@ -32,7 +32,7 @@ class Ellipse {
         this.widthComplete = true;
     }
 
-    ProjectorCommand drawCommand() {
+    ProjectorCommand makeProjectorCommand() {
         return (ProjectorApplet p) -> {
             if (!visible) {
                 //done drawing already
@@ -49,13 +49,14 @@ class Ellipse {
 
             p.ellipse(p.convertXCoord(centerX), p.convertYCoord(centerY),
                       p.convertXDistance(width), p.convertYDistance(height));
+
             p.strokeWeight(old_strokeWeight);
             p.stroke(old_strokeColor);
             return true;
         };
     }
 
-    ClickGetter makeClickGetter(ProjectorApplet p) {
+    ClickGetter makeClickGetter(ProjectorApplet p){
         return (int x, int y) -> {
             if (!centerPointComplete){
                 centerX = x;
@@ -72,7 +73,7 @@ class Ellipse {
                 height = abs(centerY - y) * 2;
                 visible = true;
 
-                p.commandQueue.add(drawCommand());
+                p.commandQueue.add(makeProjectorCommand());
                 return true;
             }
         };
diff --git a/src/EuglenaApplet.java b/src/EuglenaApplet.java
index f072f61..f044de9 100644
--- a/src/EuglenaApplet.java
+++ b/src/EuglenaApplet.java
@@ -60,8 +60,15 @@ public class EuglenaApplet extends PApplet {
 
     @Override
     public void mouseClicked(){
+        // Ignore mouse clicks in menu area
+        if (mouseX > width - menu.width) {
+            return;
+        }
+
+        // If we have a clickGetter, use that to handle the mouse click
         if (clickGetter != null) {
-            if (clickGetter.click(mouseX, mouseY)) {
+            boolean done = clickGetter.click(mouseX, mouseY);
+            if (done) {
                 clickGetter = null;
             }
         }
@@ -69,17 +76,12 @@ public class EuglenaApplet extends PApplet {
 
     @Override
     public void keyPressed() {
+        ledControl.keyPressed(key);
         if (key == CODED) {
             projectorApplet.calibrator.buttonPressed(keyCode);
 
         } else {
             switch(key) {
-                case 'd':
-                case 'w':
-                case 'a':
-                case 's':
-                    ledControl.keyPressed(key);
-                    break;
                 case ENTER:
                     //TODO: snapshot
                     //snapshot();
@@ -93,14 +95,7 @@ public class EuglenaApplet extends PApplet {
 
     @Override
     public void keyReleased() {
-        switch(key) {
-            case 'd':
-            case 'w':
-            case 'a':
-            case 's':
-                ledControl.keyReleased(key);
-                break;
-        }
+        ledControl.keyReleased(key);
     }
 
     public void controlEvent(ControlEvent theEvent) {
diff --git a/src/Expand.java b/src/Expand.java
new file mode 100644
index 0000000..74fb314
--- /dev/null
+++ b/src/Expand.java
@@ -0,0 +1,96 @@
+import processing.core.*;
+import static processing.core.PApplet.*;
+
+
+public class Expand {
+    float corner1x, corner1y, corner2x, corner2y, speed;
+    int timeElapsed, millisInit;
+    PImage expandRegion;
+
+    private boolean corner1complete;
+
+    Expand(float speed) {
+        this.speed = speed;
+        this.corner1complete = false;
+    }
+
+
+    Expand(float corner1x, float corner1y, float corner2x, float corner2y, float speed) {
+        this.corner1x = corner1x;
+        this.corner1y = corner1y;
+        this.corner2x = corner2x;
+        this.corner2y = corner2y;
+        this.speed = speed;
+
+        this.corner1complete = true;
+    }
+
+    float aspectRatio() {
+        return abs((corner2x - corner1x) / (corner2y - corner1y));
+    }
+
+    float centerx() {
+        return (corner1x + corner2x) / 2;
+    }
+
+    float centery() {
+        return (corner1y + corner2y) / 2;
+    }
+
+    void saveExpandRegion(ProjectorApplet p) {
+        this.expandRegion = p.get(
+                (int) p.convertXCoord(corner1x),
+                (int) p.convertYCoord(corner1y),
+                (int) abs(p.convertXDistance(corner2x - corner1x)),
+                (int) abs(p.convertYDistance(corner2y - corner1y)));
+    }
+
+
+    ProjectorCommand makeProjectorCommand() {
+        return (ProjectorApplet p) -> {
+            timeElapsed = p.millis() - millisInit;
+
+            float spaceElapsed = speed * (timeElapsed / 1000f);
+
+            if (p.convertYDistance(corner2y - corner1y) + spaceElapsed >= p.convertYDistance(p.height)) {
+                return true;
+            }
+
+            p.noFill();
+            p.noStroke();
+            p.rectMode(CORNER);
+            p.rect(p.convertXCoord(corner1x), p.convertYCoord(corner1y),
+                    p.convertXDistance(corner2x - corner1x), p.convertYDistance(corner2y - corner1y));
+
+            p.imageMode(CENTER);
+            p.image(expandRegion,
+                    p.convertXCoord(this.centerx()),
+                    p.convertYCoord(this.centery()),
+                    p.convertXDistance(corner2x - corner1x) + spaceElapsed * aspectRatio(),
+                    p.convertYDistance(corner2y - corner1y) + spaceElapsed);
+
+            return false;
+        };
+    }
+
+
+    ClickGetter makeClickGetter(ProjectorApplet p) {
+        return (int x, int y) -> {
+            if (!corner1complete) {
+                corner1x = x;
+                corner1y = y;
+                corner1complete = true;
+                return false;
+
+            } else {
+                corner2x = x;
+                corner2y = y;
+                millisInit = p.millis();
+                saveExpandRegion(p);
+
+                p.commandQueue.add(makeProjectorCommand());
+                return true;
+            }
+        };
+    }
+}
diff --git a/src/ExpandClass.java b/src/ExpandClass.java
deleted file mode 100644
index 3bd8389..0000000
--- a/src/ExpandClass.java
+++ /dev/null
@@ -1,84 +0,0 @@
-class Expand {
-    ExpandWindow expandinprogress;
-
-    boolean corner1complete;
-
-    void reset() {
-        expandinprogress = new ExpandWindow(-1,-1,0,0,0);
-        corner1complete = false;
-    }
-
-    Expand(){
-        corner1complete = false;
-    }
-
-    void mouseClicked(float x, float y){
-        if (!corner1complete){
-            expandinprogress.corner1x = x;
-            expandinprogress.corner1y = y;
-            corner1complete = true;
-        } else {
-            expandinprogress.corner2x = x;
-            expandinprogress.corner2y = y;
-            expandinprogress.speed = speed;
-            expandinprogress.millisInit = millis();
-            expandinprogress.saveExpandRegion();
-            expandwindows.add(expandinprogress);
-            this.reset();
-        }
-    }
-}
-
-class ExpandWindow {
-    float corner1x, corner1y, corner2x, corner2y, speed;
-    int timeElapsed, millisInit;
-    PImage expandRegion;
-
-    ExpandWindow(float corner1x, float corner1y, float corner2x, float corner2y, float speed) {
-        this.corner1x = corner1x;
-        this.corner1y = corner1y;
-        this.corner2x = corner2x;
-        this.corner2y = corner2y;
-        this.speed = speed;
-    }
-
-    float aspectRatio() {
-        return abs((corner2x - corner1x) / (corner2y - corner1y));
-    }
-
-    float centerx() {
-        return (corner1x + corner2x) / 2;
-    }
-
-    float centery() {
-        return (corner1y + corner2y) / 2;
-    }
-
-    void saveExpandRegion() {
-        this.expandRegion = get(int(convertXCoord(corner1x)), int(convertYCoord(corner1y)),
-                                int(convertXDistance(corner2x - corner1x)),int(convertYDistance(corner2y - corner1y)));
-    }
-
-    void draw() {
-
-        timeElapsed = millis() - millisInit;
-
-        if (convertYDistance(corner2y - corner1y) + speed * (timeElapsed / 1000) < convertYDistance(screenHeight)) {
-
-            noFill();
-            noStroke();
-            rectMode(CORNER);
-            rect(convertXCoord(corner1x), convertYCoord(corner1y),
-                    convertXDistance(corner2x - corner1x), convertYDistance(corner2y - corner1y));
-
-
-            imageMode(CENTER);
-            image(expandRegion, convertXCoord(this.centerx()), convertYCoord(this.centery()),
-                    convertXDistance(corner2x - corner1x) + speed * this.aspectRatio() * (timeElapsed / 1000),
-                    convertYDistance(corner2y - corner1y) + speed * (timeElapsed / 1000));
-                    
-
-
-        }
-    }
-}
diff --git a/src/Line.java b/src/Line.java
index 665ef6d..106d0f2 100644
--- a/src/Line.java
+++ b/src/Line.java
@@ -30,7 +30,7 @@ class Line {
   }
 
 
-  ProjectorCommand drawCommand() {
+  ProjectorCommand makeProjectorCommand() {
     return (ProjectorApplet p) -> {
       if (!visible) {
         //done drawing already
@@ -66,7 +66,7 @@ class Line {
         y2 = y;
         visible = true;
 
-        p.commandQueue.add(drawCommand());
+        p.commandQueue.add(makeProjectorCommand());
         return true;
       }
     };
diff --git a/src/Menu.java b/src/Menu.java
index 4fff1d3..6359bad 100644
--- a/src/Menu.java
+++ b/src/Menu.java
@@ -189,9 +189,7 @@ class Menu {
     }
 
     void controlEvent(ControlEvent theEvent) {
-        println(theEvent);
-        println(theEvent.getName());
-        println(theEvent.getLabel());
+        //println(theEvent);
         if (theEvent.isFrom(shapesList)) {
             switch((int) shapesList.getValue()) {
                 case 0:
@@ -211,19 +209,15 @@ class Menu {
             switch((int) animateList.getValue()) {
                 case 0:
 //                    shrink.reset();
-//                    drawtype = 's';
                     break;
                 case 1:
 //                    expand.reset();
-//                    drawtype = 'x';
                     break;
                 case 2:
 //                    translate.reset();
-//                    drawtype = 'm';
                     break;
                 case 3:
 //                    rotate.reset();
-//                    drawtype = 'c';
                     break;
             }
         } else if (theEvent.isFrom(presetsList)){
@@ -231,13 +225,26 @@ class Menu {
         } else {
             switch (theEvent.getLabel()) {
                 case "Commit":
-                    int rVal = Integer.parseInt(redField.getText());
-                    int gVal = Integer.parseInt(greenField.getText());
-                    int bVal = Integer.parseInt(blueField.getText());
-                    parent.penColor = parent.color(rVal, gVal, bVal);
+                    try {
+                        int rVal = Integer.parseInt(redField.getText());
+                        int gVal = Integer.parseInt(greenField.getText());
+                        int bVal = Integer.parseInt(blueField.getText());
+                        parent.penColor = parent.color(rVal, gVal, bVal);
+                    } catch (NumberFormatException e) {
+                        println("Ignored non-numeric color.");
+                    }
 
-                    parent.penWidth = Integer.parseInt(penwidthField.getText());
-                    parent.projectorApplet.setBgColor(Integer.parseInt(backgroundField.getText()));
+                    try {
+                        parent.penWidth = Integer.parseInt(penwidthField.getText());
+                    } catch (NumberFormatException e) {
+                        println("Ignored bad pen width");
+                    }
+
+                    try {
+                        parent.projectorApplet.setBgColor(Integer.parseInt(backgroundField.getText()));
+                    } catch (NumberFormatException e) {
+                        println("Ignored bad background color.");
+                    }
 //                    parent.lagTime = Integer.parseInt(lagField.getText());
 //                    parent.totalTime = Integer.parseInt(totaltimeField.getText());
 //                    parent.speed = Integer.parseInt(speedField.getText());
diff --git a/src/ProjectorApplet.java b/src/ProjectorApplet.java
index 4b151d8..da6f77f 100644
--- a/src/ProjectorApplet.java
+++ b/src/ProjectorApplet.java
@@ -1,6 +1,5 @@
 import processing.core.PApplet;
-
-import java.util.ArrayDeque;
+import java.util.ArrayList;
 
 class ProjectorApplet extends PApplet {
     final int projectorScreenNumber = 2;
@@ -13,12 +12,12 @@ class ProjectorApplet extends PApplet {
     EuglenaApplet parent;
     Calibrator calibrator;
 
-    ArrayDeque<ProjectorCommand> commandQueue;
+    ArrayList<ProjectorCommand> commandQueue;
 
     ProjectorApplet(EuglenaApplet parent) {
         this.parent = parent;
         calibrator = new Calibrator(this);
-        commandQueue = new ArrayDeque<>();
+        commandQueue = new ArrayList<>();
     }
 
     public void settings() {
@@ -36,14 +35,29 @@ class ProjectorApplet extends PApplet {
     public void draw() {
         calibrator.draw(parent);
 
-        while (!commandQueue.isEmpty()) {
-            ProjectorCommand command = commandQueue.getFirst();
-            if (command.run(this)) {
-                commandQueue.removeFirst();
-            } else {
-                break;
+        ArrayList<Integer> entriesToRemove = new ArrayList<>();
+        try {
+            for (int i = 0; i < commandQueue.size(); i++) {
+
+                boolean done = commandQueue.get(i).run(this);
+                if (done) {
+                    entriesToRemove.add(i);
+                }
+
             }
+        } catch (ProjectorCommandException e) {
+            // Do nothing
         }
+
+        // Remove entries (have to do it in reverse order to preserve indices)
+        for (int i = entriesToRemove.size() - 1; i >= 0; i--) {
+            commandQueue.remove(i);
+        }
+    }
+
+    public void reset() {
+        commandQueue.clear();
+        this.clear();
     }
 
     public void clear() {
diff --git a/src/ProjectorCommand.java b/src/ProjectorCommand.java
index a90dd0d..37fbd87 100644
--- a/src/ProjectorCommand.java
+++ b/src/ProjectorCommand.java
@@ -1,3 +1,9 @@
 public interface ProjectorCommand {
-    boolean run(ProjectorApplet p);
+    boolean run(ProjectorApplet p) throws ProjectorCommandException;
+}
+
+class ProjectorCommandException extends Exception {
+    ProjectorCommandException(String message) {
+        super(message);
+    }
 }
diff --git a/src/Rectangle.java b/src/Rectangle.java
index c27b502..b7d3e33 100644
--- a/src/Rectangle.java
+++ b/src/Rectangle.java
@@ -30,7 +30,7 @@ class Rectangle {
         this.corner1complete = true;
     }
 
-    ProjectorCommand drawCommand() {
+    ProjectorCommand makeProjectorCommand() {
         return (ProjectorApplet p) -> {
             if (!visible) {
                 //done drawing already
@@ -66,7 +66,7 @@ class Rectangle {
                 corner2y = y;
                 visible = true;
 
-                p.commandQueue.add(drawCommand());
+                p.commandQueue.add(makeProjectorCommand());
                 return true;
             }
         };
diff --git a/src/Rotate.java b/src/Rotate.java
new file mode 100644
index 0000000..a03040c
--- /dev/null
+++ b/src/Rotate.java
@@ -0,0 +1,76 @@
+import processing.core.*;
+import static processing.core.PApplet.*;
+
+
+public class Rotate {
+    float centerx, centery, radius, speed;
+    int timeElapsed, millisInit;
+    PImage rotateRegion;
+
+    private boolean centercomplete;
+
+    Rotate(float speed) {
+        this.speed = speed;
+        this.centercomplete = false;
+    }
+
+    Rotate(float centerx, float centery, float radius, float speed) {
+        this.centerx = centerx;
+        this.centery = centery;
+        this.radius = radius;
+        this.speed = speed;
+
+        this.centercomplete = true;
+    }
+
+    void saveRotateRegion(ProjectorApplet p) {
+        this.rotateRegion = p.get(
+                (int) p.convertXCoord(centerx - radius),
+                (int) p.convertYCoord(centery - radius),
+                (int) p.convertXDistance(2*radius),
+                (int) p.convertYDistance(2*radius));
+    }
+
+    ProjectorCommand makeProjectorCommand() {
+        return (ProjectorApplet p) -> {
+            timeElapsed = p.millis() - millisInit;
+
+            p.noFill();
+            p.noStroke();
+            p.rectMode(CENTER);
+            p.rect(p.convertXCoord(centerx), p.convertYCoord(centery),
+                   p.convertXDistance(radius), p.convertYDistance(radius));
+
+            p.pushMatrix();
+            p.translate(p.convertXCoord(centerx), p.convertYCoord(centery));
+
+            p.rotate(radians(speed * timeElapsed/1000f));
+
+            p.imageMode(CENTER);
+            p.image(rotateRegion, 0, 0, p.convertXDistance(2*radius), p.convertYDistance(2*radius));
+
+            p.popMatrix();
+
+            return false;
+        };
+    }
+
+    ClickGetter makeClickGetter(ProjectorApplet p){
+        return (int x, int y) -> {
+            if (!centercomplete){
+                centerx = x;
+                centery = y;
+                centercomplete = true;
+                return false;
+
+            } else {
+                radius = sqrt(pow(x - centerx, 2) + pow(y - centery, 2));
+                millisInit = p.millis();
+                saveRotateRegion(p);
+
+                p.commandQueue.add(makeProjectorCommand());
+                return true;
+            }
+        };
+    }
+}
diff --git a/src/RotateClass.java b/src/RotateClass.java
deleted file mode 100644
index 1e009f4..0000000
--- a/src/RotateClass.java
+++ /dev/null
@@ -1,68 +0,0 @@
-class Rotate {
-    RotateWindow rotateinprogress;
-
-    boolean centercomplete;
-
-    void reset() {
-        rotateinprogress = new RotateWindow(-1,-1,0,0);
-        centercomplete = false;
-    }
-
-    Rotate(){
-        centercomplete = false;
-    }
-
-    void mouseClicked(float x, float y){
-        if (!centercomplete){
-            rotateinprogress.centerx = x;
-            rotateinprogress.centery = y;
-            centercomplete = true;
-        } else {
-            rotateinprogress.radius = sqrt(pow(x - rotateinprogress.centerx, 2) + pow(y - rotateinprogress.centery, 2));
-            rotateinprogress.speed = speed;
-            rotateinprogress.millisInit = millis();
-            rotateinprogress.saveRotateRegion();
-            rotatewindows.add(rotateinprogress);
-            this.reset();
-        }
-    }
-}
-
-class RotateWindow {
-    float centerx, centery, radius, speed;
-    int timeElapsed, millisInit;
-    PImage rotateRegion;
-
-    RotateWindow(float centerx, float centery, float radius, float speed) {
-        this.centerx = centerx;
-        this.centery = centery;
-        this.radius = radius;
-        this.speed = speed;
-    }
-
-    void saveRotateRegion() {
-        this.rotateRegion = get(int(convertXCoord(centerx - radius)), int(convertYCoord(centery - radius)),
-                                int(convertXDistance(2*radius)),int(convertYDistance(2*radius)));
-    }
-
-    void draw() {
-
-        timeElapsed = millis() - millisInit;
-
-        noFill();
-        noStroke();
-        rectMode(CENTER);
-        rect(convertXCoord(centerx), convertYCoord(centery),
-                convertXDistance(radius), convertYDistance(radius));
-
-        pushMatrix();
-        translate(convertXCoord(centerx), convertYCoord(centery));
-
-        rotate(radians(speed*timeElapsed/1000));
-
-        imageMode(CENTER);
-        image(rotateRegion, 0, 0, convertXDistance(2*radius), convertYDistance(2*radius));
-
-        popMatrix();
-    }
-}
diff --git a/src/Shrink.java b/src/Shrink.java
new file mode 100644
index 0000000..341a8a9
--- /dev/null
+++ b/src/Shrink.java
@@ -0,0 +1,90 @@
+import processing.core.*;
+import static processing.core.PApplet.*;
+
+
+class Shrink {
+    float corner1x, corner1y, corner2x, corner2y, speed;
+    int timeElapsed, millisInit;
+    PImage shrinkRegion;
+
+    private boolean corner1complete;
+
+    Shrink(float speed) {
+        this.speed = speed;
+        this.corner1complete = false;
+    }
+
+    Shrink(float corner1x, float corner1y, float corner2x, float corner2y, float speed) {
+        this.corner1x = corner1x;
+        this.corner1y = corner1y;
+        this.corner2x = corner2x;
+        this.corner2y = corner2y;
+        this.speed = speed;
+
+        this.corner1complete = true;
+    }
+
+    float aspectRatio() {
+        return abs((corner2x-corner1x)/(corner2y-corner1y));
+    }
+
+    float centerx() {
+        return (corner1x + corner2x) / 2;
+    }
+
+    float centery() {
+        return (corner1y + corner2y) / 2;
+    }
+
+    void saveShrinkRegion(ProjectorApplet p) {
+        this.shrinkRegion = p.get(
+                (int) p.convertXCoord(corner1x),
+                (int) p.convertYCoord(corner1y),
+                (int) abs(p.convertXDistance(corner2x-corner1x)),
+                (int) abs(p.convertYDistance(corner2y-corner1y)));
+    }
+
+    ProjectorCommand makeProjectorCommand() {
+        return (ProjectorApplet p) -> {
+            timeElapsed = p.millis() - millisInit;
+
+            if (p.convertXDistance(corner2x-corner1x) - speed * aspectRatio() * (timeElapsed/1000f) < 25) {
+                return true;
+            }
+
+            p.noFill();
+            p.noStroke();
+            p.rectMode(CORNER);
+            p.rect(p.convertXCoord(corner1x), p.convertYCoord(corner1y),
+                    p.convertXDistance(corner2x - corner1x), p.convertYDistance(corner2y - corner1y));
+
+            p.imageMode(CENTER);
+            p.image(shrinkRegion, p.convertXCoord(this.centerx()), p.convertYCoord(this.centery()),
+                    p.convertXDistance(corner2x - corner1x) - speed * aspectRatio() * (timeElapsed / 1000f),
+                    p.convertYDistance(corner2y - corner1y) - speed * (timeElapsed / 1000f));
+
+            return false;
+        };
+    }
+
+
+    ClickGetter makeClickGetter(ProjectorApplet p){
+        return (int x, int y) -> {
+            if (!corner1complete){
+                corner1x = x;
+                corner1y = y;
+                corner1complete = true;
+                return false;
+
+            } else {
+                corner2x = x;
+                corner2y = y;
+                millisInit = p.millis();
+                saveShrinkRegion(p);
+
+                p.commandQueue.add(makeProjectorCommand());
+                return true;
+            }
+        };
+    }
+}
diff --git a/src/ShrinkClass.java b/src/ShrinkClass.java
deleted file mode 100644
index 5c58063..0000000
--- a/src/ShrinkClass.java
+++ /dev/null
@@ -1,93 +0,0 @@
-class Shrink {
-    ShrinkWindow shrinkinprogress;
-
-    boolean corner1complete;
-
-    void reset() {
-        shrinkinprogress = new ShrinkWindow(-1,-1,0,0,0);
-        corner1complete = false;
-    }
-
-    Shrink(){
-      corner1complete = false;
-    }
-
-    void mouseClicked(float x, float y){
-        if (!corner1complete){
-            shrinkinprogress.corner1x = x;
-            shrinkinprogress.corner1y = y;
-            corner1complete = true;
-        } else {
-            shrinkinprogress.corner2x = x;
-            shrinkinprogress.corner2y = y;
-            shrinkinprogress.speed = speed;
-            shrinkinprogress.millisInit = millis();
-            shrinkinprogress.saveShrinkRegion();
-            shrinkwindows.add(shrinkinprogress);
-            this.reset();
-        }
-    }
-}
-
-class ShrinkWindow {
-    float corner1x, corner1y, corner2x, corner2y, speed;
-    int timeElapsed, millisInit;
-    PImage shrinkRegion;
-
-    ShrinkWindow(float corner1x, float corner1y, float corner2x, float corner2y, float speed) {
-        this.corner1x = corner1x;
-        this.corner1y = corner1y;
-        this.corner2x = corner2x;
-        this.corner2y = corner2y;
-        this.speed = speed;
-    }
-
-    float aspectRatio() {
-        return abs((corner2x-corner1x)/(corner2y-corner1y));
-    }
-
-    float centerx() {
-        return (corner1x + corner2x) / 2;
-    }
-
-    float centery() {
-        return (corner1y + corner2y) / 2;
-    }
-
-    void saveShrinkRegion() {
-        this.shrinkRegion =  get(int(convertXCoord(corner1x)), int(convertYCoord(corner1y)),
-                                 abs(int(convertXDistance(corner2x-corner1x))), abs(int(convertYDistance(corner2y-corner1y))));
-    }
-
-    void draw(){
-
-        timeElapsed = millis()-millisInit;
-        if(convertXDistance(corner2x-corner1x) - speed * aspectRatio() * (timeElapsed/1000) > 25) {
-
-            noFill();
-            noStroke();
-            rectMode(CORNER);
-            rect(convertXCoord(corner1x), convertYCoord(corner1y),
-                    convertXDistance(corner2x - corner1x), convertYDistance(corner2y - corner1y));
-
-
-            imageMode(CENTER);
-            image(shrinkRegion, convertXCoord(this.centerx()), convertYCoord(this.centery()),
-                    convertXDistance(corner2x - corner1x) - speed * aspectRatio() * (timeElapsed / 1000),
-                    convertYDistance(corner2y - corner1y) - speed * (timeElapsed / 1000));
-
-        }
-
-//
-//        print(convertXDistance(corner2x-corner1x) - speed * aspectRatio() * (timeElapsed/1000));
-//        print("\n");
-//        print(timeElapsed);
-//        print("\n");
-//        print(aspectRatio);
-//        print("\n");
-
-    }
-
-
-
-}
diff --git a/src/Translate.java b/src/Translate.java
new file mode 100644
index 0000000..50915fa
--- /dev/null
+++ b/src/Translate.java
@@ -0,0 +1,111 @@
+import processing.core.*;
+import static processing.core.PApplet.*;
+
+
+public class Translate {
+    float corner1x, corner1y, corner2x, corner2y, endpointx, endpointy, speed;
+    int timeElapsed, millisInit;
+    PImage translateRegion;
+
+    private boolean corner1complete, corner2complete;
+
+    Translate(float speed) {
+        this.speed = speed;
+
+        this.corner1complete = false;
+        this.corner2complete = false;
+    }
+
+    Translate(float corner1x, float corner1y, float corner2x, float corner2y,
+              float endpointx, float endpointy, float speed) {
+        this.corner1x = corner1x;
+        this.corner1y = corner1y;
+        this.corner2x = corner2x;
+        this.corner2y = corner2y;
+        this.endpointx = endpointx;
+        this.endpointy = endpointy;
+        this.speed = speed;
+
+        this.corner1complete = true;
+        this.corner2complete = true;
+    }
+
+
+    float centerx() {
+        return (corner1x + corner2x) / 2;
+    }
+
+    float centery() {
+        return (corner1y + corner2y) / 2;
+    }
+
+    float theta() {
+        return (atan((endpointy-centery())/(endpointx-centerx())));
+    }
+
+    void saveTranslateRegion(ProjectorApplet p) {
+        this.translateRegion = p.get(
+                (int) p.convertXCoord(corner1x),
+                (int) p.convertYCoord(corner1y),
+                (int) abs(p.convertXDistance(corner2x-corner1x)),
+                (int) abs(p.convertYDistance(corner2y-corner1y)));
+    }
+
+
+    ProjectorCommand makeProjectorCommand() {
+        return (ProjectorApplet p) -> {
+            timeElapsed = p.millis() - millisInit;
+
+            float spaceElapsed = timeElapsed * speed / 1000f;
+
+            if (spaceElapsed * cos(theta()) * p.calibrator.magx > endpointx - centerx()) {
+                return true;
+            }
+
+            p.noFill();
+            p.noStroke();
+            p.rectMode(CORNERS);
+            p.rect(p.convertXCoord(corner1x) + spaceElapsed * cos(theta()),
+                   p.convertYCoord(corner1y) + spaceElapsed * sin(theta()),
+                   p.convertXCoord(corner2x) + spaceElapsed * cos(theta()),
+                   p.convertYCoord(corner2y) + spaceElapsed * sin(theta()));
+
+
+            p.imageMode(CENTER);
+            p.image(translateRegion,
+                    p.convertXCoord(this.centerx()) + spaceElapsed * cos(theta()),
+                    p.convertYCoord(this.centery()) + spaceElapsed * sin(theta()),
+                    p.convertXDistance(corner2x - corner1x),
+                    p.convertYDistance(corner2y - corner1y));
+
+            return false;
+        };
+    }
+
+
+    ClickGetter makeClickGetter(ProjectorApplet p){
+        return (int x, int y) -> {
+            if (!corner1complete){
+                corner1x = x;
+                corner1y = y;
+                corner1complete = true;
+                return false;
+
+            } else if (!corner2complete) {
+                corner2x = x;
+                corner2y = y;
+                corner2complete = true;
+                return false;
+
+            } else{
+                endpointx = x;
+                endpointy = y;
+                millisInit = p.millis();
+                saveTranslateRegion(p);
+
+                p.commandQueue.add(makeProjectorCommand());
+                return true;
+            }
+        };
+    }
+}
diff --git a/src/TranslateClass.java b/src/TranslateClass.java
deleted file mode 100644
index 67280ee..0000000
--- a/src/TranslateClass.java
+++ /dev/null
@@ -1,99 +0,0 @@
-class Translate {
-    TranslateWindow translateWindowinprogress;
-
-    boolean corner1complete, corner2complete;
-
-    void reset() {
-        translateWindowinprogress = new TranslateWindow(-1,-1,0,0,0,0,0);
-        corner1complete = false;
-        corner2complete = false;
-    }
-
-    Translate(){
-        corner1complete = false;
-        corner2complete = false;
-    }
-
-    void mouseClicked(float x, float y){
-        if (!corner1complete){
-            translateWindowinprogress.corner1x = x;
-            translateWindowinprogress.corner1y = y;
-            corner1complete = true;
-        } else if (!corner2complete) {
-            translateWindowinprogress.corner2x = x;
-            translateWindowinprogress.corner2y = y;
-            corner2complete = true;
-        } else{
-            translateWindowinprogress.endpointx = x;
-            translateWindowinprogress.endpointy = y;
-            translateWindowinprogress.speed = speed;
-            translateWindowinprogress.millisInit = millis();
-            translateWindowinprogress.saveTranslateRegion();
-            translatewindows.add(translateWindowinprogress);
-            this.reset();
-        }
-    }
-}
-
-class TranslateWindow {
-    float corner1x, corner1y, corner2x, corner2y, endpointx, endpointy, speed;
-    int timeElapsed, millisInit;
-    PImage translateRegion;
-
-    TranslateWindow(float corner1x, float corner1y, float corner2x, float corner2y,
-                    float endpointx, float endpointy, float speed) {
-        this.corner1x = corner1x;
-        this.corner1y = corner1y;
-        this.corner2x = corner2x;
-        this.corner2y = corner2y;
-        this.endpointx = endpointx;
-        this.endpointy = endpointy;
-        this.speed = speed;
-    }
-
-
-//    float aspectRatio() {
-//        return abs((corner2x - corner1x) / (corner2y - corner1y));
-//    }
-
-    float centerx() {
-        return (corner1x + corner2x) / 2;
-    }
-
-    float centery() {
-        return (corner1y + corner2y) / 2;
-    }
-
-    float theta() {
-        return (atan((endpointy-centery())/(endpointx-centerx())));
-    }
-
-    void saveTranslateRegion() {
-        this.translateRegion = get(int(convertXCoord(corner1x)), int(convertYCoord(corner1y)),
-        int(abs(convertXDistance(corner2x - corner1x))),int(abs(convertYDistance(corner2y - corner1y))));
-    }
-
-    void draw() {
-
-        timeElapsed = millis() - millisInit;
-
-        if (timeElapsed*speed/1000*cos(theta())*calibrator.magx <= endpointx - centerx()) {
-
-            noFill();
-            noStroke();
-            rectMode(CORNERS);
-            rect(convertXCoord(corner1x) + timeElapsed*speed/1000*cos(theta()),
-                 convertYCoord(corner1y) + timeElapsed*speed/1000*sin(theta()),
-                 convertXCoord(corner2x) + timeElapsed*speed/1000*cos(theta()),
-                 convertYCoord(corner2y) + timeElapsed*speed/1000*sin(theta()));
-
-
-            imageMode(CENTER);
-            image(translateRegion, convertXCoord(this.centerx()) + timeElapsed*speed/1000*cos(theta()),
-                  convertYCoord(this.centery()) + timeElapsed*speed/1000*sin(theta()),
-                  convertXDistance(corner2x - corner1x), convertYDistance(corner2y - corner1y));
-
-
-        }
-    }
-}
diff --git a/src/Triangle.java b/src/Triangle.java
index 201958e..0ff87b7 100644
--- a/src/Triangle.java
+++ b/src/Triangle.java
@@ -35,7 +35,7 @@ class Triangle {
         this.point2complete = true;
     }
 
-    ProjectorCommand drawCommand() {
+    ProjectorCommand makeProjectorCommand() {
         return (ProjectorApplet p) -> {
             if (!visible) {
                 //done drawing already
@@ -78,7 +78,7 @@ class Triangle {
                 point3y = y;
                 visible = true;
 
-                p.commandQueue.add(drawCommand());
+                p.commandQueue.add(makeProjectorCommand());
                 return true;
             }
         };