refactor methods to simplify interface