ID can also be an object that implements __toString