diff --git a/examples/docs/abstract.schema.md b/examples/docs/abstract.schema.md
index 72799baabf2228ab2a292ab3ba9cfc0fda2a5354..55b9dca8dcf779e529ee283be919dbeeee7d6a52 100644
--- a/examples/docs/abstract.schema.md
+++ b/examples/docs/abstract.schema.md
@@ -21,6 +21,7 @@ This is an abstract schema. It has `definitions`, but does not declare any prope
 |----------|------|-------|
 | [bar](#bar) | `string` | `https://example.com/schemas/abstract#/definitions/second` |
 | [foo](#foo) | `string` | `https://example.com/schemas/abstract#/definitions/first` |
+| [nonfoo](#nonfoo) | `const` | `https://example.com/schemas/abstract#/definitions/first` |
 
 ## bar
 
@@ -59,3 +60,22 @@ A unique identifier given to every addressable thing.
 
 
 
+
+## nonfoo
+
+This is not foo.
+
+`nonfoo`
+* is optional
+* type: `const`
+* defined in this schema
+
+The value of this property **must** be equal to:
+
+```json
+false
+```
+
+
+
+
diff --git a/examples/docs/complex.schema.md b/examples/docs/complex.schema.md
index d9d54ff89b144e12440da8b01d253293ea7b9f40..774ce4f42d654217efb769fa62e8ed3b999275e4 100644
--- a/examples/docs/complex.schema.md
+++ b/examples/docs/complex.schema.md
@@ -113,26 +113,60 @@ String or number…
 
 ### refabstract Type
 
-Unknown type `object`.
+
+`object` with following properties:
+
+
+| Property | Type | Required
+|----------|------|----------|
+| `foo`| string | Optional | 
+| `nonfoo`| boolean | Optional | 
+
+
+
+#### foo
+
+A unique identifier given to every addressable thing.
+
+`foo`
+* is optional
+* type: `string`
+
+##### foo Type
+
+
+`string`
+
+
+
+
+
+
+
+
+#### nonfoo
+
+This is not foo.
+
+`nonfoo`
+* is optional
+* type: `boolean`
+
+The value of this property **must** be equal to:
 
 ```json
-{
-  "type": "object",
-  "properties": {
-    "foo": {
-      "type": "string",
-      "description": "A unique identifier given to every addressable thing."
-    }
-  },
-  "required": true,
-  "simpletype": "`object`"
-}
+false
 ```
 
 
 
 
 
+
+
+
+
+
 ## reflist
 
 
diff --git a/examples/generated-schemas/abstract.schema.json b/examples/generated-schemas/abstract.schema.json
index f202ac4a9a344d780f2cd546d2606d0ab0a94ce6..780b192cca9579a95de15df9b5c3d899acc35352 100644
--- a/examples/generated-schemas/abstract.schema.json
+++ b/examples/generated-schemas/abstract.schema.json
@@ -17,6 +17,11 @@
                 "foo": {
                     "type": "string",
                     "description": "A unique identifier given to every addressable thing."
+                },
+                "nonfoo": {
+                    "type": "boolean",
+                    "const": false,
+                    "description": "This is not foo."
                 }
             }
         },
diff --git a/examples/schemas/abstract.schema.json b/examples/schemas/abstract.schema.json
index 2f170c0c1a7d71064f3fc1e5a19e933e589f285b..5d3a9ba9d80a6c29fa071eeb11a8581f1ffabc66 100644
--- a/examples/schemas/abstract.schema.json
+++ b/examples/schemas/abstract.schema.json
@@ -17,6 +17,11 @@
         "foo": {
           "type": "string",
           "description": "A unique identifier given to every addressable thing."
+        },
+        "nonfoo": {
+          "type": "boolean",
+          "const": false,
+          "description": "This is not foo."
         }
       }
     },
diff --git a/templates/md/nested-properties.ejs b/templates/md/nested-properties.ejs
index 66143c027698e7efbd59d351602f9e9dcd90daf3..1cc93adb9dce623a91ae56c93e4b42ef21678d6e 100644
--- a/templates/md/nested-properties.ejs
+++ b/templates/md/nested-properties.ejs
@@ -10,7 +10,7 @@
 |----------|------|----------|
 <% _.keys(props).sort().forEach(property => {
   const schema = props[property]; %>
-| `<%= property %>`| <%= schema.type %> | <%= (outer.required&&outer.required.indexOf(property)>=0) ? "**Required**" : "Optional" %> | 
+| `<%= property %>`| <%= schema.type %> | <%= (Array.isArray(outer.required)&&outer.required.indexOf(property)>=0) ? "**Required**" : "Optional" %> | 
 <%
 });
 %>
\ No newline at end of file
diff --git a/templates/md/object-type.ejs b/templates/md/object-type.ejs
index cc1902a15602aa54dd2397d757a8548ad5972bfe..00cbd60469031777a6d2944d5d18a247b803dd2d 100644
--- a/templates/md/object-type.ejs
+++ b/templates/md/object-type.ejs
@@ -12,7 +12,7 @@
 <% _.keys(schema.properties).sort().forEach(property => {
   const inner = schema.properties[property];
   inner.simpletype = "`" + inner.type + "`";
-  const required = (schema.required&&schema.required.indexOf(property)>=0); %>
+  const required = (Array.isArray(schema.required)&&schema.required.indexOf(property)>=0); %>
 
 <%- include("nested-property",{
     _:_, 
diff --git a/templates/md/property.ejs b/templates/md/property.ejs
index f1dafd05a514ba5bcec0b6226b175feb58499cbd..522c68f8bcbff6dc1da5728327c8179bf62733df 100644
--- a/templates/md/property.ejs
+++ b/templates/md/property.ejs
@@ -41,6 +41,8 @@ The value of this property **must** be equal to one of the [known values below](
 <%- include("number-type",{schema:schema,_:_}) %>
 <% } else if (schema.type==="boolean") { %>
 <%- include("boolean-type",{schema:schema,_:_}) %>
+<% } else if (schema.type==="object") { %>
+<%- include("object-type",{schema:schema,_:_}) %>
 <% } else if (schema.type==="array") { %>
 <%- include("array-type",{schema:schema,_:_,nested:false,ejs:ejs}) %>
 <% } else if (schema.$ref!==undefined) { %>