Move timezone handling into the BaseApplication class. Also mark onRun as protected as it should be.
Don't call getParameters() via magic call.
Extract array path finding algorythm.
Optimize unnecessary calls to resolveLinks by caching resolved parameters. This also enables getOffset to return by reference.