refactor
fix bug
implement shell executable