added keyword parameters to function types such that function semantics can be done the same for all kinds of functions, including constructor functions