Implementing canonical GP