moved comparable interface to its own file