better coordinate abstraction