add a basic rubberband state, add viewport pushing into the layer
cleaned up source