working on complex function decls