use function types for signature generation