added rotate() and get_dot_product()