refactor: change input interface