replace canvasDimension and scroll with viewport, clean up broken/incomplete modules