function providers can now be non-static public methods, each "new" within a script will create an instance of the function provider class, allowing state to be maintained between calls natively.