refactor commands into separate modules