make distinction between regular object ands functions, arrays, regexps etc
update tests