save/restore offset+scale
rotation
refactoring