support optional arguments
handle rest parameter correctly
remove case for naked call signature inside interfaces
support type arguments