refactored to include current position info