Invocable: an interface to represent a function that can be invoked
support more complicated arguments parsing
refactor: move FunctionCall to separate file