allow shape rotation
redo internal API to allow more complex actions