Adjusted API so 'functional' is instantiated in a sensible place