more usage and new rotate function