change to report type error
change object structure
implement VisitFuncCallNode for function object