-record(command, { name :: binary(), precondition :: fun((any()) -> boolean()), next_model :: fun((any()) -> any()), run :: fun((any()) -> {ok, nil} | {error, binary()}) }).