diff --git a/lib/GEODE/Metadata/Types.hs b/lib/GEODE/Metadata/Types.hs
index 0999f7dd27b918138673f3a04cb55751d0ecf5da..0a038b2d243c3ceb95abec4d4ba6f76e11970be1 100644
--- a/lib/GEODE/Metadata/Types.hs
+++ b/lib/GEODE/Metadata/Types.hs
@@ -9,8 +9,8 @@ import Data.Aeson.KeyMap as Object (union)
 import Data.Csv (FromNamedRecord(..), ToNamedRecord(..))
 import Data.HashMap.Strict as Hash (union)
 
-infixr 9 @
-infixr 9 :@:
+infixl 9 @
+infixl 9 :@:
 data a @ b = a :@: b
 
 class Has a b where
@@ -19,11 +19,11 @@ class Has a b where
 instance Has a a where
   get = id
 
-instance Has a c => Has a (b @ c) where
-  get (_ :@: c) = get c
+instance Has a b => Has a (b @ c) where
+  get (b :@: _) = get b
 
-instance {-# OVERLAPS #-} Has a (a @ b) where
-  get (a :@: _) = a
+instance {-# OVERLAPS #-} Has b (a @ b) where
+  get (_ :@: b) = b
 
 instance (ToNamedRecord a, ToNamedRecord b) => ToNamedRecord (a @ b) where
   toNamedRecord (a :@: b) = Hash.union (toNamedRecord a) (toNamedRecord b)