updated with more control over current positions