add rotation implementation