Generalized GP Implmentation

Generalized GP Implementation to allow approximations.