- implement command search fully
- refactor a lot