Implementation of a GP