allow for arbitrary end points