implement first version of DelegateCommand
improve DelegateCommand by adding parameter checks, comments and usage description