diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,6 @@
+0.1.6
+* Add Ord instances
+
 0.1.5
 * Fix serialization bug where userinfo was not including the @ separator.
 
diff --git a/src/URI/ByteString/Types.hs b/src/URI/ByteString/Types.hs
--- a/src/URI/ByteString/Types.hs
+++ b/src/URI/ByteString/Types.hs
@@ -17,19 +17,19 @@
 -- | Required first component to referring to a specification for the
 -- remainder of the URI's components, e.g. "http" or "https"
 newtype Scheme = Scheme { schemeBS :: ByteString }
-  deriving (Show, Eq, Generic, Typeable)
+  deriving (Show, Eq, Generic, Typeable, Ord)
 
 
 -------------------------------------------------------------------------------
 newtype Host = Host { hostBS :: ByteString }
-  deriving (Show, Eq, Generic, Typeable)
+  deriving (Show, Eq, Generic, Typeable, Ord)
 
 
 -------------------------------------------------------------------------------
 -- | While some libraries have chosen to limit this to a Word16, the
 -- spec only specifies that the string be comprised of digits.
 newtype Port = Port { portNumber :: Int }
-  deriving (Show, Eq, Generic, Typeable)
+  deriving (Show, Eq, Generic, Typeable, Ord)
 
 
 -------------------------------------------------------------------------------
@@ -37,19 +37,19 @@
       authorityUserInfo :: Maybe UserInfo
     , authorityHost     :: Host
     , authorityPort     :: Maybe Port
-    } deriving (Show, Eq, Generic, Typeable)
+    } deriving (Show, Eq, Generic, Typeable, Ord)
 
 
 -------------------------------------------------------------------------------
 data UserInfo = UserInfo {
       uiUsername :: ByteString
     , uiPassword :: ByteString
-    } deriving (Show, Eq, Generic, Typeable)
+    } deriving (Show, Eq, Generic, Typeable, Ord)
 
 
 -------------------------------------------------------------------------------
 newtype Query = Query { queryPairs :: [(ByteString, ByteString)] }
-              deriving (Show, Eq, Monoid, Generic, Typeable)
+              deriving (Show, Eq, Monoid, Generic, Typeable, Ord)
 
 
 -------------------------------------------------------------------------------
@@ -60,7 +60,7 @@
     , uriQuery     :: Query
     , uriFragment  :: Maybe ByteString
     -- ^ URI fragment. Does not include the #
-    } deriving (Show, Eq, Generic, Typeable)
+    } deriving (Show, Eq, Generic, Typeable, Ord)
 
 
 -------------------------------------------------------------------------------
@@ -70,7 +70,7 @@
     , rrQuery     :: Query
     , rrFragment  :: Maybe ByteString
     -- ^ URI fragment. Does not include the #
-    } deriving (Show, Eq, Generic, Typeable)
+    } deriving (Show, Eq, Generic, Typeable, Ord)
 
 
 -------------------------------------------------------------------------------
diff --git a/test/URI/ByteStringTests.hs b/test/URI/ByteStringTests.hs
--- a/test/URI/ByteStringTests.hs
+++ b/test/URI/ByteStringTests.hs
@@ -96,6 +96,14 @@
           (Query [("listParam[]", "foo,bar")])
           Nothing
 
+  , testParses "https://www.example.org#only-fragment" $
+      URI (Scheme "https")
+          (Just (Authority Nothing (Host "www.example.org") Nothing))
+          ""
+          (Query [])
+          (Just "only-fragment")
+
+
   , parseTestURI strictURIParserOptions "http://www.example.org/." $
       Right $ URI
           (Scheme "http")
diff --git a/uri-bytestring.cabal b/uri-bytestring.cabal
--- a/uri-bytestring.cabal
+++ b/uri-bytestring.cabal
@@ -1,5 +1,5 @@
 name:                uri-bytestring
-version:             0.1.5
+version:             0.1.6
 synopsis:            Haskell URI parsing as ByteStrings
 description: uri-bytestring aims to be an RFC3986 compliant URI parser that uses efficient ByteStrings for parsing and representing the URI data.
 license:             BSD3
