Using 'func' types for extensibility