test: refactor the unit tests a bit
feat: meaningful exception when error happens during instantiation
feat: print function/class tokens nicely
fix: factory function can return a primitive or falsy value
refactor: use a helper fn for isFunction
test: refactor a bit