refactored command structs