diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+## 6.2.0 (2018-05-08)
+
+* Remove field prefixes from `DIDerivedType`, `DIBasicType` and
+  `DISubroutineType` to make the API consistent with the other debug
+  metadata types.
+* Change the type of the scope fields in `DIModule` and `DINamespace`
+  to `Maybe (MDRef DIScope)` to reflect that they can be optional.
+
 ## 6.1.0 (2018-05-05)
 
 * IRBuilder: Ensure that automatically generated block labels are
diff --git a/llvm-hs-pure.cabal b/llvm-hs-pure.cabal
--- a/llvm-hs-pure.cabal
+++ b/llvm-hs-pure.cabal
@@ -1,5 +1,5 @@
 name: llvm-hs-pure
-version: 6.1.0
+version: 6.2.0
 license: BSD3
 license-file: LICENSE
 author: Anthony Cowley, Stephen Diehl, Moritz Kiefer <moritz.kiefer@purelyfunctional.org>, Benjamin S. Scarlet
diff --git a/src/LLVM/AST/Operand.hs b/src/LLVM/AST/Operand.hs
--- a/src/LLVM/AST/Operand.hs
+++ b/src/LLVM/AST/Operand.hs
@@ -214,7 +214,7 @@
   deriving (Eq, Ord, Read, Show, Typeable, Data, Generic)
 
 data DIModule = Module
-  { scope :: MDRef DIScope
+  { scope :: Maybe (MDRef DIScope)
   , name :: ShortByteString
   , configurationMacros :: ShortByteString
   , includePath :: ShortByteString
@@ -223,7 +223,7 @@
 
 data DINamespace = Namespace
   { name :: ShortByteString
-  , scope :: MDRef DIScope
+  , scope :: Maybe (MDRef DIScope)
   , exportSymbols :: Bool
   } deriving (Eq, Ord, Read, Show, Typeable, Data, Generic)
 
@@ -308,18 +308,18 @@
 
 -- | <https://llvm.org/docs/LangRef.html#dibasictype>
 data DIBasicType = BasicType
-  { typeName :: ShortByteString
+  { name :: ShortByteString
   , sizeInBits :: Word64
   , alignInBits :: Word32
-  , typeEncoding :: Maybe Encoding
-  , typeTag :: BasicTypeTag
+  , encoding :: Maybe Encoding
+  , tag :: BasicTypeTag
   } deriving (Eq, Ord, Read, Show, Typeable, Data, Generic)
 
 -- | <https://llvm.org/docs/LangRef.html#disubroutinetype>
 data DISubroutineType = SubroutineType
-  { typeFlags :: [DIFlag]
-  , typeCC :: Word8
-  , typeTypeArray :: [Maybe (MDRef DIType)]
+  { flags :: [DIFlag]
+  , cc :: Word8
+  , typeArray :: [Maybe (MDRef DIType)]
   -- ^ The first element is the return type, the following are the
   -- operand types. `Nothing` corresponds to @void@.
   } deriving (Eq, Ord, Read, Show, Typeable, Data, Generic)
@@ -342,17 +342,17 @@
 -- | <https://llvm.org/docs/LangRef.html#diderivedtype>
 data DIDerivedType =
   DerivedType
-    { derivedTag :: DerivedTypeTag
-    , derivedName :: ShortByteString
-    , derivedFile :: Maybe (MDRef DIFile)
-    , derivedLine :: Word32
-    , derivedScope :: Maybe (MDRef DIScope)
-    , derivedBaseType :: MDRef DIType
+    { tag :: DerivedTypeTag
+    , name :: ShortByteString
+    , file :: Maybe (MDRef DIFile)
+    , line :: Word32
+    , scope :: Maybe (MDRef DIScope)
+    , baseType :: MDRef DIType
     , sizeInBits :: Word64
     , alignInBits :: Word32
-    , derivedOffsetInBits :: Word64
-    , derivedAddressSpace :: Maybe Word32
-    , derivedFlags :: [DIFlag]
+    , offsetInBits :: Word64
+    , addressSpace :: Maybe Word32
+    , flags :: [DIFlag]
     } deriving (Eq, Ord, Read, Show, Typeable, Data, Generic)
 
 -- | <https://llvm.org/docs/LangRef.html#dicompositetype>
diff --git a/src/LLVM/IRBuilder/Module.hs b/src/LLVM/IRBuilder/Module.hs
--- a/src/LLVM/IRBuilder/Module.hs
+++ b/src/LLVM/IRBuilder/Module.hs
@@ -147,7 +147,7 @@
 extern
   :: MonadModuleBuilder m
   => Name   -- ^ Definition name
-  -> [Type] -- ^ Parametere types
+  -> [Type] -- ^ Parameter types
   -> Type   -- ^ Type
   -> m Operand
 extern nm argtys retty = do
