diff --git a/src/main/java/com/syncleus/dann/examples/colormap/ColorMapDemo.java b/src/main/java/com/syncleus/dann/examples/colormap/ColorMapDemo.java
index 8088f221e3c134e883d03fda84fcbb2b0f733e95..462eb3cb9bb71b37940d127f2c291848f39baa77 100644
--- a/src/main/java/com/syncleus/dann/examples/colormap/ColorMapDemo.java
+++ b/src/main/java/com/syncleus/dann/examples/colormap/ColorMapDemo.java
@@ -23,8 +23,9 @@ import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
-import java.awt.event.WindowListener;
+import javax.swing.JFrame;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -34,7 +35,7 @@ import javax.swing.Timer;
 import javax.swing.UIManager;
 import org.apache.log4j.Logger;
 
-public class ColorMapDemo extends javax.swing.JFrame implements ActionListener, WindowListener
+public class ColorMapDemo extends JFrame implements ActionListener
 {
 	private static final Logger LOGGER = Logger.getLogger(ColorMapDemo.class);
 
@@ -78,56 +79,16 @@ public class ColorMapDemo extends javax.swing.JFrame implements ActionListener,
 		this.setResizable(false);
 		this.setSize(550, 175);
 		this.color1d = (new ColorMap1dCallable(INITIAL_ITERATIONS, INITIAL_LEARNING_RATE, 500)).call();
-    }
-
-	/** @inheritDoc */
-	@Override
-	public void windowClosing(final WindowEvent evt)
-	{
-		this.executor.shutdown();
-	}
-
-	/** @inheritDoc */
-	@Override
-	public void windowClosed(final WindowEvent evt)
-	{
-		// unused
-	}
-
-	/** @inheritDoc */
-	@Override
-	public void windowOpened(final WindowEvent evt)
-	{
-		// unused
-	}
-
-	/** @inheritDoc */
-	@Override
-	public void windowIconified(final WindowEvent evt)
-	{
-		// unused
-	}
 
-	/** @inheritDoc */
-	@Override
-	public void windowDeiconified(final WindowEvent evt)
-	{
-		// unused
-	}
-
-	/** @inheritDoc */
-	@Override
-	public void windowActivated(final WindowEvent evt)
-	{
-		// unused
-	}
-
-	/** @inheritDoc */
-	@Override
-	public void windowDeactivated(final WindowEvent evt)
-	{
-		// unused
-	}
+		this.addWindowListener(new WindowAdapter()
+		{
+			@Override
+			public void windowClosing(WindowEvent event)
+			{
+				executor.shutdown();
+			}
+		});
+    }
 
 	@Override
 	public void actionPerformed(final ActionEvent evt)
@@ -145,7 +106,6 @@ public class ColorMapDemo extends javax.swing.JFrame implements ActionListener,
 			this.progressBar.setValue(this.callable2d.getProgress());
 		}
 
-
 		if(this.future1d != null)
 		{
 			if(!this.future1d.isDone())
diff --git a/src/main/java/com/syncleus/dann/examples/hyperassociativemap/visualization/ViewMap.java b/src/main/java/com/syncleus/dann/examples/hyperassociativemap/visualization/ViewMap.java
index 694697cb66d3cfb99b159bdc93630ed256c981ed..09b895b77c3740cd33cfde3f8f67264df97815a7 100644
--- a/src/main/java/com/syncleus/dann/examples/hyperassociativemap/visualization/ViewMap.java
+++ b/src/main/java/com/syncleus/dann/examples/hyperassociativemap/visualization/ViewMap.java
@@ -23,16 +23,16 @@ import com.syncleus.dann.graph.drawing.hyperassociativemap.visualization.Hyperas
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
+import java.awt.event.KeyAdapter;
 import java.awt.event.WindowEvent;
-import java.awt.event.WindowListener;
+import java.awt.event.WindowAdapter;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.FutureTask;
 import javax.swing.JFrame;
 import javax.swing.Timer;
 
-public class ViewMap extends JFrame implements ActionListener, WindowListener, KeyListener
+public class ViewMap extends JFrame implements ActionListener
 {
 	private static final float NODE_RADIUS = 0.07F;
 	private final HyperassociativeMapCanvas mapVisual;
@@ -55,9 +55,10 @@ public class ViewMap extends JFrame implements ActionListener, WindowListener, K
 			this.executor.execute(this.lastRun);
 
 			myMapVisual.setFocusTraversalKeysEnabled(false);
-			myMapVisual.addKeyListener(this);
-			myMapVisual.getCanvas3D().addKeyListener(this);
-			this.addKeyListener(this);
+			AssociativeMapKeyAdapter keyAdapter = new AssociativeMapKeyAdapter(associativeMap);
+			myMapVisual.addKeyListener(keyAdapter);
+			myMapVisual.getCanvas3D().addKeyListener(keyAdapter);
+			this.addKeyListener(keyAdapter);
 
 			new Timer(100, this).start();
 
@@ -76,103 +77,66 @@ public class ViewMap extends JFrame implements ActionListener, WindowListener, K
 			this.add(this.mapVisual);
 		}
 
-		this.addWindowListener(this);
+		this.addWindowListener(new WindowAdapter()
+		{
+			@Override
+			public void windowClosing(WindowEvent event)
+			{
+				executor.shutdown();
+			}
+		});
 		this.setFocusTraversalKeysEnabled(false);
 
 		this.setSize(800, 600);
 	}
 
-	@Override
-	public void keyPressed(final KeyEvent evt)
+	private static class AssociativeMapKeyAdapter extends KeyAdapter
 	{
-		if (evt.getKeyCode() == KeyEvent.VK_R)
-		{
-			this.associativeMap.reset();
-		}
-		if (evt.getKeyCode() == KeyEvent.VK_L)
+		private final LayeredHyperassociativeMap associativeMap;
+
+		public AssociativeMapKeyAdapter(final LayeredHyperassociativeMap associativeMap)
 		{
-			this.associativeMap.resetLearning();
+			this.associativeMap = associativeMap;
 		}
-		else if (evt.getKeyCode() == KeyEvent.VK_UP)
+
+		@Override
+		public void keyPressed(final KeyEvent evt)
 		{
-			if (this.associativeMap.getEquilibriumDistance() < 1.0)
+			if (evt.getKeyCode() == KeyEvent.VK_R)
 			{
-				this.associativeMap.setEquilibriumDistance(this.associativeMap.getEquilibriumDistance() * 1.1);
+				this.associativeMap.reset();
 			}
-			else
+			if (evt.getKeyCode() == KeyEvent.VK_L)
 			{
-				this.associativeMap.setEquilibriumDistance(this.associativeMap.getEquilibriumDistance() + 1.0);
+				this.associativeMap.resetLearning();
 			}
-			this.associativeMap.resetLearning();
-		}
-		else if (evt.getKeyCode() == KeyEvent.VK_DOWN)
-		{
-			if (this.associativeMap.getEquilibriumDistance() < 2.0)
+			else if (evt.getKeyCode() == KeyEvent.VK_UP)
 			{
-				this.associativeMap.setEquilibriumDistance(this.associativeMap.getEquilibriumDistance() * 0.9);
+				if (this.associativeMap.getEquilibriumDistance() < 1.0)
+				{
+					this.associativeMap.setEquilibriumDistance(this.associativeMap.getEquilibriumDistance() * 1.1);
+				}
+				else
+				{
+					this.associativeMap.setEquilibriumDistance(this.associativeMap.getEquilibriumDistance() + 1.0);
+				}
+				this.associativeMap.resetLearning();
 			}
-			else
+			else if (evt.getKeyCode() == KeyEvent.VK_DOWN)
 			{
-				this.associativeMap.setEquilibriumDistance(this.associativeMap.getEquilibriumDistance() - 1.0);
+				if (this.associativeMap.getEquilibriumDistance() < 2.0)
+				{
+					this.associativeMap.setEquilibriumDistance(this.associativeMap.getEquilibriumDistance() * 0.9);
+				}
+				else
+				{
+					this.associativeMap.setEquilibriumDistance(this.associativeMap.getEquilibriumDistance() - 1.0);
+				}
+				this.associativeMap.resetLearning();
 			}
-			this.associativeMap.resetLearning();
 		}
 	}
 
-	@Override
-	public void keyReleased(final KeyEvent evt)
-	{
-		// unused
-	}
-
-	@Override
-	public void keyTyped(final KeyEvent evt)
-	{
-		// unused
-	}
-
-	@Override
-	public void windowClosing(final WindowEvent evt)
-	{
-		this.executor.shutdown();
-	}
-
-	@Override
-	public void windowClosed(final WindowEvent evt)
-	{
-		// unused
-	}
-
-	@Override
-	public void windowOpened(final WindowEvent evt)
-	{
-		// unused
-	}
-
-	@Override
-	public void windowIconified(final WindowEvent evt)
-	{
-		// unused
-	}
-
-	@Override
-	public void windowDeiconified(final WindowEvent evt)
-	{
-		// unused
-	}
-
-	@Override
-	public void windowActivated(final WindowEvent evt)
-	{
-		// unused
-	}
-
-	@Override
-	public void windowDeactivated(final WindowEvent evt)
-	{
-		// unused
-	}
-
 	@Override
 	public void actionPerformed(final ActionEvent evt)
 	{
@@ -220,7 +184,7 @@ public class ViewMap extends JFrame implements ActionListener, WindowListener, K
 
 		System.out.println("controls:");
 		System.out.println("R: reset");
-		System.out.println("L: reset learing curve");
+		System.out.println("L: reset learning curve");
 		System.out.println("up arrow: increase Equilibrium");
 		System.out.println("down arrow: decrease Equilibrium");
 
diff --git a/src/test/java/com/syncleus/dann/examples/colormap/TestColorMapDemo.java b/src/test/java/com/syncleus/dann/examples/colormap/TestColorMapDemo.java
index 7889f381b1e4c28d77136c6f3933a7376329c92c..267b622eb1befd3b904fcfb0739ae60b517bfab5 100644
--- a/src/test/java/com/syncleus/dann/examples/colormap/TestColorMapDemo.java
+++ b/src/test/java/com/syncleus/dann/examples/colormap/TestColorMapDemo.java
@@ -80,10 +80,10 @@ public class TestColorMapDemo
 		colorMapDemoFixture.spinner("learningRateSpinner").enterTextAndCommit("0.01");
 		colorMapDemoFixture.spinner("learningRateSpinner").increment(9);
 		double currentValue = Double.valueOf(colorMapDemoFixture.spinner("learningRateSpinner").text());
-		Assert.assertTrue("learning rate spinner did notincrement properly", (currentValue - 0.1) < 0.00001);
+		Assert.assertTrue("learning rate spinner did not increment properly", (currentValue - 0.1) < 0.00001);
 		colorMapDemoFixture.spinner("learningRateSpinner").increment(100);
 		currentValue = Double.valueOf(colorMapDemoFixture.spinner("learningRateSpinner").text());
-		Assert.assertTrue("learning rate spinner did notincrement properly", (currentValue - 1.0) < 0.001);
+		Assert.assertTrue("learning rate spinner did not increment properly", (currentValue - 1.0) < 0.001);
 		//lets try decrementing
 		colorMapDemoFixture.spinner("iterationsSpinner").enterTextAndCommit("10000");
 		colorMapDemoFixture.spinner("iterationsSpinner").requireValue(10000);
@@ -94,10 +94,10 @@ public class TestColorMapDemo
 		colorMapDemoFixture.spinner("learningRateSpinner").enterTextAndCommit("1.0");
 		colorMapDemoFixture.spinner("learningRateSpinner").decrement(10);
 		currentValue = Double.valueOf(colorMapDemoFixture.spinner("learningRateSpinner").text());
-		Assert.assertTrue("learning rate spinner did notincrement properly", (currentValue - 0.9) < 0.00001);
+		Assert.assertTrue("learning rate spinner did not increment properly", (currentValue - 0.9) < 0.00001);
 		colorMapDemoFixture.spinner("learningRateSpinner").decrement(100);
 		currentValue = Double.valueOf(colorMapDemoFixture.spinner("learningRateSpinner").text());
-		Assert.assertTrue("learning rate spinner did notincrement properly", (currentValue - 0.01) < 0.00001);
+		Assert.assertTrue("learning rate spinner did not increment properly", (currentValue - 0.01) < 0.00001);
 	}
 
 	@Test(expected=UnexpectedException.class)