various small improvements
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/axis/viewport/ViewportAxis.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/axis/viewport/ViewportAxis.xtend
index 89e2403..bc12049 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/axis/viewport/ViewportAxis.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/axis/viewport/ViewportAxis.xtend
@@ -20,6 +20,16 @@
 		this.visiblePixelRange = visiblePixelRange
 	}
 	
+	def getPixelOrigin() { pixelOrigin }
+	
+	def void setPixelOrigin(int pixelOrigin) {
+		this.pixelOrigin = pixelOrigin
+	}
+	
+	def int getOriginSegmentPosition() {
+		underlyingAxis.getSegmentPositionByPixelLocation(pixelOrigin)
+	}
+	
 	override getSegmentCount() {
 		val endSegmentPosition = underlyingAxis.getSegmentPositionByPixelLocation(visiblePixelRange.endPixel)
 		endSegmentPosition - originSegmentPosition
@@ -42,15 +52,7 @@
 	}
 	
 	override setSegmentDataValue(int segmentPosition, Object newValue) {
-		throw new UnsupportedOperationException("TODO: auto-generated method stub")
-	}
-	
-	def int getOriginSegmentPosition() {
-		underlyingAxis.getSegmentPositionByPixelLocation(pixelOrigin)
-	}
-	
-	def void setPixelOrigin(int pixelOrigin) {
-		this.pixelOrigin = pixelOrigin
+		underlyingAxis.setSegmentDataValue(originSegmentPosition + segmentPosition, newValue)
 	}
 	
 }
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelArea.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelArea.xtend
index e8a93a5..bc09245 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelArea.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/geometry/PixelArea.xtend
@@ -6,8 +6,8 @@
 	val PixelRange verticalPixelRange
 	
 	new(int xPixel, int yPixel, int pixelWidth, int pixelHeight) {
-		horizontalPixelRange = new PixelRange(xPixel, pixelWidth)
-		verticalPixelRange = new PixelRange(yPixel, pixelHeight)
+		this.horizontalPixelRange = new PixelRange(xPixel, pixelWidth)
+		this.verticalPixelRange = new PixelRange(yPixel, pixelHeight)
 	}
 	
 	def getHorizontalPixelRange() { horizontalPixelRange }
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/DummyLayer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/DummyLayer.xtend
index 0f7b493..9e26f55 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/DummyLayer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/DummyLayer.xtend
@@ -10,8 +10,8 @@
 	val Axis verticalAxis
 
 	new(int columnCount, int rowCount, int defaultColumnWidth, int defaultRowHeight) {
-		horizontalAxis = new DefaultAxis(columnCount, defaultColumnWidth)
-		verticalAxis = new DefaultAxis(rowCount, defaultRowHeight)
+		this.horizontalAxis = new DefaultAxis(columnCount, defaultColumnWidth)
+		this.verticalAxis = new DefaultAxis(rowCount, defaultRowHeight)
 	}
 	
 	override getHorizontalAxis() { horizontalAxis }
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/composite/CompositeLayer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/composite/CompositeLayer.xtend
index f23bad0..2982ffc 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/composite/CompositeLayer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/composite/CompositeLayer.xtend
@@ -21,6 +21,10 @@
 	override getVerticalAxis() { verticalAxis }
 	
 	override getCellPositionBounds(int columnPosition, int rowPosition) {
+		// find index of layer corresponding to given column position (& track horiz offset)
+		// find index of layer corresponding to given row position (& track vert offset)
+		// => find layer in layout
+		// call method with offset col/row positions
 		throw new UnsupportedOperationException("TODO: auto-generated method stub")
 	}
 	
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/header/ColumnHeaderLayer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/header/ColumnHeaderLayer.xtend
index 50e35af..36674cf 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/header/ColumnHeaderLayer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/header/ColumnHeaderLayer.xtend
@@ -28,7 +28,7 @@
 	}
 	
 	override setCellDataValue(int columnPosition, int rowPosition, Object newValue) {
-		throw new UnsupportedOperationException("TODO: auto-generated method stub")
+		horizontalAxis.setSegmentDataValue(columnPosition, newValue)
 	}
 	
 }
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/header/RowHeaderLayer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/header/RowHeaderLayer.xtend
index b8379b6..534ff10 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/header/RowHeaderLayer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/header/RowHeaderLayer.xtend
@@ -28,7 +28,7 @@
 	}
 	
 	override setCellDataValue(int columnPosition, int rowPosition, Object newValue) {
-		throw new UnsupportedOperationException("TODO: auto-generated method stub")
+		verticalAxis.setSegmentDataValue(rowPosition, newValue)
 	}
 	
 }
\ No newline at end of file
diff --git a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/viewport/ViewportLayer.xtend b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/viewport/ViewportLayer.xtend
index d469763..f69a0d9 100644
--- a/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/viewport/ViewportLayer.xtend
+++ b/NatTable/src/org/eclipse/nebula/widgets/nattable/core/layer/viewport/ViewportLayer.xtend
@@ -7,16 +7,16 @@
 
 class ViewportLayer implements Layer {
 
-	Layer underlyingLayer
+	val Layer underlyingLayer
 
-	ViewportAxis horizontalViewportAxis
-	ViewportAxis verticalViewportAxis
+	val ViewportAxis horizontalViewportAxis
+	val ViewportAxis verticalViewportAxis
 	
 	new(Layer underlyingLayer, PixelArea pixelArea) {
 		this.underlyingLayer = underlyingLayer
 		
-		horizontalViewportAxis = new ViewportAxis(underlyingLayer.horizontalAxis, pixelArea.horizontalPixelRange)
-		verticalViewportAxis = new ViewportAxis(underlyingLayer.verticalAxis, pixelArea.verticalPixelRange)
+		this.horizontalViewportAxis = new ViewportAxis(underlyingLayer.horizontalAxis, pixelArea.horizontalPixelRange)
+		this.verticalViewportAxis = new ViewportAxis(underlyingLayer.verticalAxis, pixelArea.verticalPixelRange)
 	}
 	
 	override getHorizontalAxis() {
@@ -32,11 +32,18 @@
 	}
 	
 	override getCellDataValue(int columnPosition, int rowPosition) {
-		throw new UnsupportedOperationException("TODO: auto-generated method stub")
+		underlyingLayer.getCellDataValue(
+			horizontalViewportAxis.originSegmentPosition + columnPosition,
+			verticalViewportAxis.originSegmentPosition + rowPosition
+		)
 	}
 	
 	override setCellDataValue(int columnPosition, int rowPosition, Object newValue) {
-		throw new UnsupportedOperationException("TODO: auto-generated method stub")
+		underlyingLayer.setCellDataValue(
+			horizontalViewportAxis.originSegmentPosition + columnPosition,
+			verticalViewportAxis.originSegmentPosition + rowPosition,
+			newValue
+		)
 	}
 	
 }
\ No newline at end of file