diff --git a/Source/Processors/Visualization/SpikeDisplayCanvas.cpp b/Source/Processors/Visualization/SpikeDisplayCanvas.cpp
index e5567d696778474389572d5dc7b392df57f502ff..ae5f5aae37d4a409e1a0acde926dee21f7b1e1d7 100755
--- a/Source/Processors/Visualization/SpikeDisplayCanvas.cpp
+++ b/Source/Processors/Visualization/SpikeDisplayCanvas.cpp
@@ -300,7 +300,7 @@ void SpikeDisplayCanvas::processSpikeEvents()
 
 	 		simSpike.nSamples = 40;
 
-			//spikeDisplay->plotSpike(simSpike);
+			spikeDisplay->plotSpike(simSpike);
 
 		}
 
@@ -316,8 +316,21 @@ void SpikeDisplayCanvas::processSpikeEvents()
 SpikeDisplay::SpikeDisplay(SpikeDisplayCanvas* sdc, Viewport* v) :
 	canvas(sdc), viewport(v)
 {
+
+	minWidth = 300; 
+	maxWidth = 500;
+	minHeight = 100;
+	maxHeight = 200;
+
 	totalHeight = 1000;
 
+	for (int i = 0; i < 10; i++)
+	{
+		SpikePlot* spikePlot = new SpikePlot(canvas, i, 2);
+		spikePlots.add(spikePlot);
+		addAndMakeVisible(spikePlot);
+	}
+
 }
 
 SpikeDisplay::~SpikeDisplay()
@@ -339,6 +352,41 @@ void SpikeDisplay::paint(Graphics& g)
 void SpikeDisplay::resized()
 {
 
+	int w = getWidth();
+
+	int numColumns = w / minWidth;
+	int column, row;
+
+	float width = (float) w / (float) numColumns;
+	float height = width * 0.75;
+
+	for (int i = 0; i < spikePlots.size(); i++)
+	{
+
+		column = i % numColumns;
+		row = i / numColumns;
+		spikePlots[i]->setBounds(width*column,row*height,width,height);
+
+	}
+
+	totalHeight = (int) height*(float(row)+1);
+
+	if (totalHeight < getHeight())
+	{
+		canvas->resized();
+	}
+
+	//setBounds(0,0,getWidth(), totalHeight);
+
+
+	 // layoutManagerX.layOutComponents((Component**) spikePlots.getRawDataPointer(), 
+	 // 							   spikePlots.size(),
+	 // 							   0,
+	 // 							   0,
+	 // 							   getWidth(),
+	 // 							   getHeight(),
+	 // 							   false,
+	 // 							   false);
 }
 
 void SpikeDisplay::mouseDown(const MouseEvent& event)
@@ -346,6 +394,11 @@ void SpikeDisplay::mouseDown(const MouseEvent& event)
 
 }
 
+void SpikeDisplay::plotSpike(const SpikeObject& spike)
+{
+
+}
+
 
 
 
@@ -367,7 +420,14 @@ SpikePlot::~SpikePlot()
 void SpikePlot::paint(Graphics& g)
 {
 
-	g.fillAll(Colours::yellow);
+	g.setColour(Colours::yellow);
+	g.fillRect(10, 10, getWidth()-20, getHeight()-20);
+
+	g.setColour(Colours::black);
+
+	g.drawLine(0, 0, getWidth(), getHeight());
+	g.drawLine(0, getHeight(), getWidth(), 0);
+
 }
 
 void SpikePlot::select()
diff --git a/Source/Processors/Visualization/SpikeDisplayCanvas.h b/Source/Processors/Visualization/SpikeDisplayCanvas.h
index 68309cc4ff30b426889ec5dec3f6af7038ea868c..e8032209960a6b7158a78e4d08cd41b163f87928 100755
--- a/Source/Processors/Visualization/SpikeDisplayCanvas.h
+++ b/Source/Processors/Visualization/SpikeDisplayCanvas.h
@@ -102,7 +102,7 @@ public:
 
 	void mouseDown(const MouseEvent& event);
 
-	//void plotSpike(const SpikeObject& spike);
+	void plotSpike(const SpikeObject& spike);
 
 
 	int getTotalHeight() {return totalHeight;}
@@ -120,7 +120,9 @@ private:
 	SpikeDisplayCanvas* canvas;
 	Viewport* viewport;
 
-	Array<SpikePlot*> spikePlots;
+	OwnedArray<SpikePlot> spikePlots;
+
+	int maxWidth, maxHeight, minWidth, minHeight;
 
 };