@@ -1,8 +1,10 @@
 import styled from 'styled-components'
 import System from './System'
 
-const create = new System({
-  createComponent: type => (...args) => styled(type)([], ...args)
+export const createSystem = (styledFn) => new System({
+  createComponent: type => (...args) => styledFn(type)([], ...args)
 })
 
+const create = createSystem(styled)
+
 export default create
import styled from 'styled-components'
import System from './System'

const create = new System({
  createComponent: type => (...args) => styled(type)([], ...args)
})

export default create

Thanks for this! I was first considering exporting the `System` class itself, since it might eventually take more arguments that the `createComponent` argument. I think also having the empty array as the first argument is only necessary for styled-components, so I'd want to make sure that part is really customizable. The `createComponent` function could also be leveraged to do more than only swap out css-in-js libraries, if that makes sense...