implement user-defined command