diff --git a/tupak/utils.py b/tupak/utils.py
index cd15302089101f7f509da80b448ab896b1c4ee04..3bf1baf0e8cd785c911a0670fade064ab96eb985 100644
--- a/tupak/utils.py
+++ b/tupak/utils.py
@@ -246,23 +246,24 @@ def get_polarization_tensor(ra, dec, time, psi, mode):
     v = np.array([-np.sin(phi), np.cos(phi), 0])
     m = -u * np.sin(psi) - v * np.cos(psi)
     n = -u * np.cos(psi) + v * np.sin(psi)
-    omega = np.cross(m, n)
 
-    polarization_tensors = {
-        "plus" : np.einsum('i,j->ij', m, m) - np.einsum('i,j->ij', n, n),
-        "cross": np.einsum('i,j->ij', m, n) + np.einsum('i,j->ij', n, m),
-        "breathing": np.einsum('i,j->ij', m, m) + np.einsum('i,j->ij', n, n),
-        "longitudinal": np.sqrt(2) * np.einsum('i,j->ij', omega, omega),
-        "x": np.einsum('i,j->ij', m, omega) + np.einsum('i,j->ij', omega, m),
-        "y": np.einsum('i,j->ij', n, omega) + np.einsum('i,j->ij', omega, n)
-    }
-
-    if mode in polarization_tensors.keys():
-        polarization_tensor = polarization_tensors[mode]
+    if mode.lower() == 'plus':
+        return np.einsum('i,j->ij', m, m) - np.einsum('i,j->ij', n, n)
+    elif mode.lower() == 'cross':
+        return np.einsum('i,j->ij', m, n) + np.einsum('i,j->ij', n, m)
+    elif mode.lower() == 'breathing':
+        return np.einsum('i,j->ij', m, m) + np.einsum('i,j->ij', n, n)
+
+    omega = np.cross(m, n)
+    if mode.lower() == 'longitudinal':
+        return np.sqrt(2) * np.einsum('i,j->ij', omega, omega)
+    elif mode.lower() == 'x':
+        return np.einsum('i,j->ij', m, omega) + np.einsum('i,j->ij', omega, m)
+    elif mode.lower() == 'y':
+        return np.einsum('i,j->ij', n, omega) + np.einsum('i,j->ij', omega, n)
     else:
         logging.warning("{} not a polarization mode!".format(mode))
-        polarization_tensor = None
-    return polarization_tensor
+        return None
 
 
 def get_vertex_position_geocentric(latitude, longitude, elevation):