resolve #18 refactor to make interactive