detoxify some of this
shift-move
refactor geometry and add background