Adding function calling, with optional arguments