moving FunctionAttribute to core