works with any starting position