Base implementation

I would pass in the actual required options in the constructor rather than relying on `$this->options` being (hopefully) immutable