added arbitrary rotation stuff (buggy)