add isFunction and isObject