Added optional deferred initialisation to allow subclass constructor arguments to be captured first.