I wonder since the accept method requires this to implement DataCommand, either we should require a DataCommand or make the accept command not throw ClassCastExceptions if you put in a command isn't a DataCommand or CacheRpCommand?