new command factory function added