first pass at FunctionDeclaration