#22 refactor commands