diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,9 @@
+# 0.9.1.0
+
+## Added features
+
+ * Improve error message when `asc_` or `desc_` is missing in `orderBy_`
+
 # 0.9.0.0
 
 ## Removal of machine-dependent `Int`/`Word` instances
@@ -164,7 +170,7 @@
 ## Aggregations return `Maybe` types
 
 In previous versions of beam, aggregations such as `avg_`, `sum_`, etc
-returned the an expression of the same type as its inputs. However,
+returned an expression of the same type as its inputs. However,
 this does not match standard SQL behavior, where these aggregates can
 return NULL if no rows are selected for the aggregation. This breaks
 older code, but is more correct. To restore the older behavior, use
@@ -265,4 +271,3 @@
 * Split out backends from `beam-core`
 * Allow non-table entities to be stored in databases
 * Basic migrations support
-
diff --git a/Database/Beam/Query/Combinators.hs b/Database/Beam/Query/Combinators.hs
--- a/Database/Beam/Query/Combinators.hs
+++ b/Database/Beam/Query/Combinators.hs
@@ -84,6 +84,8 @@
 import Data.Proxy
 import Data.Time (LocalTime)
 
+import GHC.TypeLits (TypeError, ErrorMessage(Text))
+
 -- | Introduce all entries of a table into the 'Q' monad
 all_ :: ( Database be db, BeamSqlBackend be )
        => DatabaseEntity be db (TableEntity table)
@@ -288,7 +290,7 @@
 related_ relTbl relKey =
   join_ relTbl (\rel -> relKey ==. primaryKey rel)
 
--- | Introduce all entries of the given table which for which the expression (which can depend on the queried table returns true)
+-- | Introduce all entries of the given table for which the expression (which can depend on the queried table returns true)
 relatedBy_ :: forall be db rel s
             . ( Database be db, Table rel, BeamSqlBackend be )
            => DatabaseEntity be db (TableEntity rel)
@@ -296,7 +298,7 @@
            -> Q be db s (rel (QExpr be s))
 relatedBy_ = join_
 
--- | Introduce all entries of the given table which for which the expression (which can depend on the queried table returns true)
+-- | Introduce all entries of the given table for which the expression (which can depend on the queried table returns true)
 relatedBy_' :: forall be db rel s
              . ( Database be db, Table rel, BeamSqlBackend be )
             => DatabaseEntity be db (TableEntity rel)
@@ -655,6 +657,9 @@
     makeSQLOrdering :: Proxy be -> a -> [ WithExprContext (BeamSqlBackendOrderingSyntax be) ]
 instance SqlOrderable be (QOrd be s a) where
     makeSQLOrdering _ (QOrd x) = [x]
+instance TypeError ('Text "Missing mandatory sorting order. Use either 'asc_' or 'desc_' to specify sorting order.") =>
+    SqlOrderable be (QGenExpr ctx be s a) where
+        makeSQLOrdering = error "unreachable SqlOrderable QGenExpr instance"
 instance SqlOrderable be a => SqlOrderable be [a] where
     makeSQLOrdering be = concatMap (makeSQLOrdering be)
 instance ( SqlOrderable be a, SqlOrderable be b ) => SqlOrderable be (a, b) where
@@ -816,7 +821,7 @@
     onNull' <- onNull
     coalesceE . (<> [onNull']) <$> mapM (\(QExpr q) -> q) qs
 
--- | Converta a 'Maybe' value to a concrete value, by suppling a default
+-- | Convert a 'Maybe' value to a concrete value, by suppling a default
 fromMaybe_ :: BeamSqlBackend be
            => QGenExpr ctxt be s a -> QGenExpr ctxt be s (Maybe a) -> QGenExpr ctxt be s a
 fromMaybe_ onNull q = coalesce_ [q] onNull
diff --git a/Database/Beam/Query/CustomSQL.hs b/Database/Beam/Query/CustomSQL.hs
--- a/Database/Beam/Query/CustomSQL.hs
+++ b/Database/Beam/Query/CustomSQL.hs
@@ -31,7 +31,7 @@
 --   is called with arguments representing SQL expressions, that, when
 --   evaluated, will evaluate to the result of the expressions supplied as
 --   arguments to 'customExpr_'. See the section on
---   <https://haskell-beam.github.io/beam/user-guide/extensibility/ extensibility>
+--   <https://haskell-beam.github.io/beam/user-guide/extensibility/extensibility>
 --   in the user guide for example usage.
 module Database.Beam.Query.CustomSQL
   (
@@ -108,4 +108,3 @@
 --   aggregates for use in 'aggregate_'.
 agg_ :: QAgg be s a -> QAgg be s a
 agg_ = id
-
diff --git a/Database/Beam/Schema/Tables.hs b/Database/Beam/Schema/Tables.hs
--- a/Database/Beam/Schema/Tables.hs
+++ b/Database/Beam/Schema/Tables.hs
@@ -148,7 +148,7 @@
 --   contstruct these for you.
 newtype EntityModification f be e = EntityModification (Endo (f e))
   deriving (Monoid, Semigroup)
--- | A newtype wrapper around 'Columnar f a -> Columnar f ' (i.e., an
+-- | A newtype wrapper around 'Columnar f a -> Columnar f a' (i.e., an
 --   endomorphism between 'Columnar's over 'f'). You usually want to use
 --   'fieldNamed' or the 'IsString' instance to rename the field, when 'f ~
 --   TableField'
diff --git a/beam-core.cabal b/beam-core.cabal
--- a/beam-core.cabal
+++ b/beam-core.cabal
@@ -2,7 +2,7 @@
 -- see http://haskell.org/cabal/users-guide/
 
 name:                beam-core
-version:             0.9.0.0
+version:             0.9.1.0
 synopsis:            Type-safe, feature-complete SQL query and manipulation interface for Haskell
 description:         Beam is a Haskell library for type-safe querying and manipulation of SQL databases.
                      Beam is modular and supports various backends. In order to use beam, you will need to use
@@ -61,7 +61,7 @@
                        Database.Beam.Schema.Lenses
 
   build-depends:       base         >=4.9     && <5.0,
-                       aeson        >=0.11    && <1.5,
+                       aeson        >=0.11    && <1.6,
                        text         >=1.2.2.0 && <1.3,
                        bytestring   >=0.10    && <0.11,
                        mtl          >=2.2.1   && <2.3,
