more flexible .turn()