derive command implement