different implementation cp