copy current_point since it might be modified
refactoring and fixes