refactoring: adding interface to gem