@@ -154,6 +183,7 @@ export {
   ComponentWithChildrenRerender,
   ComponentWithDifferentViews,
   ComponentWithProps,
+  ComponentWithInheritance,
   ComponentWithImperativeEvent,
   ComponentWithDeclarativeEvent
 }
diff --git a/libraries/dio/meta/expectedResults.json b/libraries/dio/meta/expectedResults.json
index 33d25e192e..fb9150a507 100644
--- a/libraries/dio/meta/expectedResults.json
+++ b/libraries/dio/meta/expectedResults.json
@@ -1,5 +1,5 @@
 {
-  "success": 26,
+  "success": 28,
   "failed": 6,
   "skipped": 0,
   "error": false,
@@ -12,8 +12,8 @@
     "passed": 16
   },
   "advancedSupport": {
-    "total": 16,
+    "total": 18,
     "failed": 6,
-    "passed": 10
+    "passed": 12
   }
 }
\ No newline at end of file
diff --git a/libraries/dio/src/advanced-tests.js b/libraries/dio/src/advanced-tests.js
index b8ed66cd9a..b76087f80a 100644
--- a/libraries/dio/src/advanced-tests.js
+++ b/libraries/dio/src/advanced-tests.js
@@ -25,7 +25,8 @@ import {
   ComponentWithProperties,
   ComponentWithUnregistered,
   ComponentWithImperativeEvent,
-  ComponentWithDeclarativeEvent
+  ComponentWithDeclarativeEvent,
+  ComponentWithInheritance
 } from "./components";
 
 // Setup the test harness. This will get cleaned out with every test.
@@ -72,6 +73,14 @@ describe("advanced support", function() {
       expect(data).to.eql({ label: "passed" });
     });
 
+    it("will pass object data to inherited properties", function() {
+      this.weight = 2;
+      render(
, scratch);
+      let wc = scratch.querySelector("#wc");
+      expect(wc.arr).to.eql(["D", "I", "O"]);
+      expect(wc.obj).to.eql({ org: "thysultan", repo: "dio.js" });
+    });
+
   });
 
   describe("events", function() {
diff --git a/libraries/dio/src/components.js b/libraries/dio/src/components.js
index 78df469ca7..696082b5c1 100644
--- a/libraries/dio/src/components.js
+++ b/libraries/dio/src/components.js
@@ -19,6 +19,7 @@ import { h, render, Component } from 'dio.js';
 import 'ce-without-children';
 import 'ce-with-children';
 import 'ce-with-properties';
+import 'ce-with-inheritance';
 import 'ce-with-event';
 
 export class ComponentWithoutChildren extends Component {
@@ -109,6 +110,31 @@ export class ComponentWithProperties extends Component {
   }
 }
 
+export class ComponentWithInheritance extends Component {
+  render () {
+    const data = {
+      bool: true,
+      num: 42,
+      str: 'DIO',
+      arr: ['D', 'I', 'O'],
+      obj: { org: 'thysultan', repo: 'dio.js' },
+      camelCaseObj: { label: "passed" }
+    };
+    return (
+      
+        
+      
+    );
+  }
+}
+
 export class ComponentWithUnregistered extends Component {
   render () {
     const data = {
diff --git a/libraries/dojo/meta/expectedResults.json b/libraries/dojo/meta/expectedResults.json
index 755586be4b..aa7948790a 100644
--- a/libraries/dojo/meta/expectedResults.json
+++ b/libraries/dojo/meta/expectedResults.json
@@ -1,5 +1,5 @@
 {
-  "success": 32,
+  "success": 34,
   "failed": 0,
   "skipped": 0,
   "error": false,
@@ -12,8 +12,8 @@
     "passed": 16
   },
   "advancedSupport": {
-    "total": 16,
+    "total": 18,
     "failed": 0,
-    "passed": 16
+    "passed": 18
   }
 }
\ No newline at end of file
diff --git a/libraries/dojo/src/advanced-tests.ts b/libraries/dojo/src/advanced-tests.ts
index e8bfb1eb53..e4da4fefd1 100644
--- a/libraries/dojo/src/advanced-tests.ts
+++ b/libraries/dojo/src/advanced-tests.ts
@@ -18,7 +18,8 @@
 import { expect } from "chai";
 import {
   ComponentWithProperties,
-  ComponentWithDeclarativeEvent
+  ComponentWithDeclarativeEvent,
+  ComponentWithInheritance
 } from "./components";
 
 import renderer, { w } from "@dojo/framework/core/vdom";
@@ -70,6 +71,15 @@ describe("advanced support", function() {
       expect(data).to.eql({ label: "passed" });
     });
 
+    it("will pass object data to inherited properties", function() {
+      this.weight = 2;
+      const r = renderer(() => w(ComponentWithInheritance, {}));
+      r.mount({ domNode: scratch, sync: true });
+      const wc: any = document.querySelector("ce-with-inheritance");
+      expect(wc.arr).to.eql(["d", "o", "j", "o"]);
+      expect(wc.obj).to.eql({ org: "dojo", repo: "dojo" });
+    });
+
   });
 
   describe("events", function() {
diff --git a/libraries/dojo/src/components.ts b/libraries/dojo/src/components.ts
index 436bef0f36..8a324240d7 100644
--- a/libraries/dojo/src/components.ts
+++ b/libraries/dojo/src/components.ts
@@ -20,6 +20,7 @@ import icache from '@dojo/framework/core/middleware/icache';
 import 'ce-without-children';
 import 'ce-with-children';
 import 'ce-with-properties';
+import 'ce-with-inheritance';
 import 'ce-with-event';
 
 const factory = create({ icache });
@@ -67,6 +68,18 @@ export const ComponentWithProperties = factory(() => {
   return v('ce-with-properties', data);
 });
 
+export const ComponentWithInheritance = factory(() => {
+  const data = {
+    bool: true,
+    num: 42,
+    str: 'Dojo',
+    arr: ['d', 'o', 'j', 'o'],
+    obj: { org: 'dojo', repo: 'dojo' },
+    camelCaseObj: { label: "passed" }
+  };
+  return v('ce-with-inheritance', data);
+});
+
 export const ComponentWithUnregistered = factory(() => {
   const data = {
     bool: true,
diff --git a/libraries/hybrids/meta/expectedResults.json b/libraries/hybrids/meta/expectedResults.json
index c15d4478b5..14aaf05758 100644
--- a/libraries/hybrids/meta/expectedResults.json
+++ b/libraries/hybrids/meta/expectedResults.json
@@ -1,19 +1,19 @@
 {
   "success": 30,
-  "failed": 2,
+  "failed": 4,
   "skipped": 0,
   "error": false,
   "disconnected": false,
   "exitCode": 1,
-  "score": 94,
+  "score": 89,
   "basicSupport": {
     "total": 16,
     "failed": 0,
     "passed": 16
   },
   "advancedSupport": {
-    "total": 16,
-    "failed": 2,
+    "total": 18,
+    "failed": 4,
     "passed": 14
   }
 }
\ No newline at end of file
diff --git a/libraries/hybrids/src/advanced-tests.js b/libraries/hybrids/src/advanced-tests.js
index 7caa0d6f8e..58f3b6ee6c 100644
--- a/libraries/hybrids/src/advanced-tests.js
+++ b/libraries/hybrids/src/advanced-tests.js
@@ -20,6 +20,7 @@ import { define } from "hybrids";
 
 import {
   ComponentWithProperties,
+  ComponentWithInheritance,
   ComponentWithDeclarativeEvent,
 } from "./components";
 
@@ -43,12 +44,10 @@ describe("advanced support", function() {
 
   describe("attributes and properties", function() {
     define("component-with-properties", ComponentWithProperties);
-
-    beforeEach(() => {
-      root.appendChild(document.createElement("component-with-properties"));
-    })
+    define("component-with-inheritance", ComponentWithInheritance);
 
     it("will pass array data as a property", function(done) {
+      root.appendChild(document.createElement("component-with-properties"));
       this.weight = 2;
       requestAnimationFrame(() => {
         const wc = root.firstElementChild.shadowRoot.querySelector('#wc');
@@ -59,6 +58,7 @@ describe("advanced support", function() {
     });
 
     it("will pass object data as a property", function(done) {
+      root.appendChild(document.createElement("component-with-properties"));
       this.weight = 2;
       requestAnimationFrame(() => {
         const wc = root.firstElementChild.shadowRoot.querySelector('#wc');
@@ -69,6 +69,7 @@ describe("advanced support", function() {
     });
 
     it("will pass object data to a camelCase-named property", function(done) {
+      root.appendChild(document.createElement("component-with-properties"));
       this.weight = 2;
       requestAnimationFrame(() => {
         const wc = root.firstElementChild.shadowRoot.querySelector('#wc');
@@ -78,6 +79,17 @@ describe("advanced support", function() {
       });
     });
 
+    it("will pass object data to inherited properties", function(done) {
+      root.appendChild(document.createElement("component-with-inheritance"));
+      this.weight = 2;
+      requestAnimationFrame(() => {
+        const wc = root.firstElementChild.shadowRoot.querySelector('#wc');
+        expect(wc.arr).to.eql(["h", "y", "b", "r", "i", "d", "s"]);
+        expect(wc.obj).to.eql({ library: "hybrids" });
+        done();
+      });
+    });
+
   });
 
   describe("events", function() {
diff --git a/libraries/hybrids/src/components.js b/libraries/hybrids/src/components.js
index ae5810576e..7b2d5c7700 100644
--- a/libraries/hybrids/src/components.js
+++ b/libraries/hybrids/src/components.js
@@ -18,6 +18,7 @@
 import 'ce-without-children';
 import 'ce-with-children';
 import 'ce-with-properties';
+import 'ce-with-inheritance';
 import 'ce-with-event';
 
 import { html } from 'hybrids';
@@ -62,6 +63,20 @@ export const ComponentWithProperties = {
   `,
 };
 
+export const ComponentWithInheritance = {
+  render: () => html`
+    
+  `,
+};
+
 export const ComponentWithDeclarativeEvent = {
   lowercaseHandled: false,
   kebabHandled: false,
diff --git a/libraries/hyperapp/meta/expectedResults.json b/libraries/hyperapp/meta/expectedResults.json
index 755586be4b..aa7948790a 100644
--- a/libraries/hyperapp/meta/expectedResults.json
+++ b/libraries/hyperapp/meta/expectedResults.json
@@ -1,5 +1,5 @@
 {
-  "success": 32,
+  "success": 34,
   "failed": 0,
   "skipped": 0,
   "error": false,
@@ -12,8 +12,8 @@
     "passed": 16
   },
   "advancedSupport": {
-    "total": 16,
+    "total": 18,
     "failed": 0,
-    "passed": 16
+    "passed": 18
   }
 }
\ No newline at end of file
diff --git a/libraries/hyperapp/package.json b/libraries/hyperapp/package.json
index aed382d23f..f5b5b846bb 100644
--- a/libraries/hyperapp/package.json
+++ b/libraries/hyperapp/package.json
@@ -35,7 +35,7 @@
       "output": [
         "results"
       ],
-      "command": "cross-env LIBRARY_NAME=hyperapp karma start"
+      "command": "cross-env LIBRARY_NAME=hyperapp karma start || echo''"
     },
     "build": {
       "dependencies": [
diff --git a/libraries/hyperapp/src/advanced-tests.js b/libraries/hyperapp/src/advanced-tests.js
index 941ab139cd..40da90660b 100644
--- a/libraries/hyperapp/src/advanced-tests.js
+++ b/libraries/hyperapp/src/advanced-tests.js
@@ -24,7 +24,8 @@ import {
   ComponentWithDifferentViews,
   ComponentWithProperties,
   ComponentWithImperativeEvent,
-  ComponentWithDeclarativeEvent
+  ComponentWithDeclarativeEvent,
+  ComponentWithInheritance
 } from "./components";
 
 // Setup the test harness. This will get cleaned out with every test.
@@ -69,6 +70,15 @@ describe("advanced support", function () {
       expect(wc.camelCaseObj).to.eql({ label: "passed" });
     });
 
+    it("will pass object data to inherited properties", async function () {
+      this.weight = 2;
+      ComponentWithInheritance(root);
+      await new Promise(requestAnimationFrame);
+      let wc = testContainer.querySelector("#wc");
+      expect(wc.arr).to.eql(["H", "y", "p", "e", "r", "a", "p", "p"]);
+      expect(wc.obj).to.eql({ org: "Hyperapp", repo: "hyperapp.js" });
+    });
+
   });
 
   describe("events", function () {
diff --git a/libraries/hyperapp/src/components.js b/libraries/hyperapp/src/components.js
index 73726e7934..f207f69a2f 100644
--- a/libraries/hyperapp/src/components.js
+++ b/libraries/hyperapp/src/components.js
@@ -18,6 +18,7 @@
 import "ce-without-children"
 import "ce-with-children"
 import "ce-with-properties"
+import "ce-with-inheritance";
 import "ce-with-event"
 
 import { app, h, text } from "hyperapp"
@@ -81,6 +82,24 @@ export const ComponentWithProperties = node =>
       ]),
   })
 
+export const ComponentWithInheritance = node =>
+app({
+  node,
+  init: {},
+  view: () =>
+    h("div", {}, [
+      h("ce-with-inheritance", {
+        id: "wc",
+        bool: true,
+        num: 42,
+        str: "Hyperapp",
+        arr: ["H", "y", "p", "e", "r", "a", "p", "p"],
+        obj: { org: "Hyperapp", repo: "hyperapp.js" },
+        camelCaseObj: { label: "passed" },
+      }),
+    ]),
+})
+
 export const ComponentWithImperativeEvent = node => {
   const _withElem = (_, opts) =>
     requestAnimationFrame(_ => {
diff --git a/libraries/hyperhtml/meta/expectedResults.json b/libraries/hyperhtml/meta/expectedResults.json
index 755586be4b..aa7948790a 100644
--- a/libraries/hyperhtml/meta/expectedResults.json
+++ b/libraries/hyperhtml/meta/expectedResults.json
@@ -1,5 +1,5 @@
 {
-  "success": 32,
+  "success": 34,
   "failed": 0,
   "skipped": 0,
   "error": false,
@@ -12,8 +12,8 @@
     "passed": 16
   },
   "advancedSupport": {
-    "total": 16,
+    "total": 18,
     "failed": 0,
-    "passed": 16
+    "passed": 18
   }
 }
\ No newline at end of file
diff --git a/libraries/hyperhtml/package.json b/libraries/hyperhtml/package.json
index 64db55f9b3..b3f8d56ff8 100644
--- a/libraries/hyperhtml/package.json
+++ b/libraries/hyperhtml/package.json
@@ -35,7 +35,7 @@
       "output": [
         "results"
       ],
-      "command": "cross-env LIBRARY_NAME=hyperhtml karma start"
+      "command": "cross-env LIBRARY_NAME=hyperhtml karma start || echo ''"
     },
     "build": {
       "dependencies": [
diff --git a/libraries/hyperhtml/src/advanced-tests.js b/libraries/hyperhtml/src/advanced-tests.js
index 90762c1507..337ed80cb8 100644
--- a/libraries/hyperhtml/src/advanced-tests.js
+++ b/libraries/hyperhtml/src/advanced-tests.js
@@ -27,7 +27,8 @@ import {
   ComponentWithDifferentViews,
   ComponentWithProperties,
   ComponentWithImperativeEvent,
-  ComponentWithDeclarativeEvent
+  ComponentWithDeclarativeEvent,
+  ComponentWithInheritance
 } from "./components";
 
 // Setup the test harness. This will get cleaned out with every test.
@@ -70,6 +71,14 @@ describe("advanced support", function() {
       expect(wc.camelCaseObj).to.eql({ label: "passed" });
     });
 
+    it("will pass object data to inherited properties", async function() {
+      this.weight = 2;
+      ComponentWithInheritance(root);
+      let wc = root.querySelector("#wc");
+      expect(wc.arr).to.eql(["h", "y", "p", "e", "r", "H", "T", "M", "L"]);
+      expect(wc.obj).to.eql({ org: "viperHTML", repo: "hyperHTML" });
+    });
+
   });
 
   describe("events", function() {
diff --git a/libraries/hyperhtml/src/components.js b/libraries/hyperhtml/src/components.js
index 4ab1431184..6446807968 100644
--- a/libraries/hyperhtml/src/components.js
+++ b/libraries/hyperhtml/src/components.js
@@ -18,6 +18,7 @@
 import 'ce-without-children';
 import 'ce-with-children';
 import 'ce-with-properties';
+import 'ce-with-inheritance';
 import 'ce-with-event';
 
 import HyperHTMLELement from 'hyperhtml-element/esm';
@@ -79,6 +80,18 @@ export const ComponentWithProperties = (root) => hyper(root)`
     >
   
 `;
 
+export const ComponentWithInheritance = (root) => hyper(root)`
+