refactor methods to delegate instead of calling directly