refactor into interfaces
added get info