diff --git a/qsymm/groups.py b/qsymm/groups.py
index b34de1315528a7963ee7defa87449b8d338150c9..e559c9226411a1f66c42c11d3aa2064f7231bcd4 100644
--- a/qsymm/groups.py
+++ b/qsymm/groups.py
@@ -235,9 +235,9 @@ class PointGroupElement:
         if U is None:
             Uinv = None
         elif c:
-            Uinv = la.inv(U).conj()
+            Uinv = U.T
         else:
-            Uinv = la.inv(U)
+            Uinv = U.T.conj()
         # Check if inverse is stored, if not, calculate it
         Rinv = _inv(R)
         result = PointGroupElement(Rinv, c, a, Uinv, _strict_eq=self._strict_eq)
diff --git a/qsymm/model.py b/qsymm/model.py
index 21dbd615484939e1550a4edd83b525a0425cb759..48ad102a8ebdb5ed32b919a71ee454549a975d78 100644
--- a/qsymm/model.py
+++ b/qsymm/model.py
@@ -196,7 +196,7 @@ class Model(UserDict):
         else:
             self.keep = set()
 
-        if hamiltonian == {} or isinstance(hamiltonian, abc.Mapping):
+        if isinstance(hamiltonian, abc.Mapping):
             # Initialize as dict sympifying the keys
             self.data = {symbol_normalizer(k): v for k, v in hamiltonian.items()
                               if symbol_normalizer(k) in self.keep