added implcit rules for arguments, function type check