refactor loggable interface