refactored to use generic CP responses