     /// - parameter columnName: A column name.
     /// - returns: An optional *Value*.
     public func value<Value: DatabaseValueConvertible>(named columnName: String) -> Value {
-        if let index = impl.indexForColumn(named: columnName) {
-            return value(atIndex: index)
-        } else {
+        guard let index = impl.indexForColumn(named: columnName) else {
             fatalError("No such column: \(String(reflecting: columnName))")
         }
+        return value(atIndex: index)
     }
     
     /// Returns the value of type `Value` at given column.

            return nil
        }
        
        func detachedRow(row: Row) -> Row {
            return row
        }
    }

            //
            // Perform a NULL check, and prevent SQLite from converting NULL to
            // a 0 integer, for example.
            guard sqlite3_column_type(sqliteStatement, Int32(index)) != SQLITE_NULL else {
                fatalError("Could not convert NULL to \(Value.self).")
            }
            return Value(sqliteStatement: sqliteStatement, index: Int32(index))
        } else {
            // Detached row
            return impl.databaseValue(atIndex: index).value()
