some code cleanup, added IRotatable