diff --git a/pabeam/beamformer.py b/pabeam/beamformer.py
index 0bb1b5d4c9dee2d3d75e5b996044c153dd6c4bda..82004a29494791ba2cf5664a9e5683ba5fe034d5 100644
--- a/pabeam/beamformer.py
+++ b/pabeam/beamformer.py
@@ -671,4 +671,13 @@ class DualDipoleBeam(GriddedBeam):
         e = self.gain_errors
         w = w*e
         self.Hbeam = np.sum((AF.T*w.conj()).T,axis=0)#/np.sqrt(w.shape[0])
-        return self.Hbeam
\ No newline at end of file
+        return self.Hbeam
+
+    def getGGrid(self,freq, pol = 'rcp', transmit_pol = 'rcp'):
+        AF = self.getG(*(self.spherical_grid), freq, pol = pol, 
+                    transmit_pol = transmit_pol)
+        w = self.weights
+        e = self.gain_errors
+        w = w*e
+        self.beam = np.sum((AF.T*w.conj()).T,axis=0)#/np.sqrt(w.shape[0])
+        return self.beam    
\ No newline at end of file
diff --git a/pabeam/fitbeam.py b/pabeam/fitbeam.py
index aa0f60a0ea40f844fdf408ecbc0fe071708dc48c..aa30b38f804aafe48900d3da378ef8cfb3192a4b 100755
--- a/pabeam/fitbeam.py
+++ b/pabeam/fitbeam.py
@@ -306,5 +306,26 @@ def FitWeights(beam, source_dir, constraints, freq,
             print("underdetermined")
             return np.dot(np.linalg.pinv(Aht),constraints).squeeze()  #complex weights
 
+def projectionG(beam, rfi_dir, freq, 
+               receiver_pol = 'ele', transmit_pol = 'rcp'):
+    W = beam.getG(rfi_dir[0], rfi_dir[1], freq, 
+                  pol = receiver_pol, transmit_pol = transmit_pol) #Nant x N_rfi
+    Nant = W.shape[0]
+    Nrfi = W.shape[1]
+    P = np.eye(Nant)
+    R = np.dot(W,W.conj().T)
+    l,V = np.linalg.eig(R)
+    V_sel = V[:,np.abs(l)>1e-7]
+    #print(V,V_sel.shape,V_sel,l)
+    P = P - np.dot(V_sel,V_sel.conj().T)
+    # for i in range(Nrfi):
+    #     #wtemp = np.dot(W[:,i],P)
+    #     #p = np.eye(beam.Nant) - \
+    #     #    np.outer(wtemp,wtemp.conj())/np.dot(wtemp,wtemp.conj())
+    #     #P = p
+    #     p = np.eye(beam.Nant) - \
+    #         np.outer(W[:,i],W[:,i].conj())/np.dot(W[:,i],W[:,i].conj())
+    #     P = np.dot(p,P)
 
+    return P