diff --git a/GPy/core/gp.py b/GPy/core/gp.py
index <HASH>..<HASH> 100644
--- a/GPy/core/gp.py
+++ b/GPy/core/gp.py
@@ -92,6 +92,22 @@ class GP(Model):
         logger.info("adding kernel and likelihood as parameters")
         self.link_parameter(self.kern)
         self.link_parameter(self.likelihood)
+        
+    def set_X(self,X):
+        # TODO: it does not work with BGPLVM
+        if isinstance(X, ObsAr):
+            self.X = X
+        else:
+            self.X = ObsAr(X)
+
+    def set_Y(self,Y):
+        if self.normalizer is not None:
+            self.normalizer.scale_by(Y)
+            self.Y_normalized = ObsAr(self.normalizer.normalize(Y))
+            self.Y = Y
+        else:
+            self.Y = ObsAr(Y)
+            self.Y_normalized = self.Y        
 
     def parameters_changed(self):
         self.posterior, self._log_marginal_likelihood, self.grad_dict = self.inference_method.inference(self.kern, self.X, self.likelihood, self.Y_normalized, self.Y_metadata)
add set_X and set_Y interface to gp model