moved comparable to a separate file