refactor FnExpression to allow for just apply and also passing in extra inputs