Base implementation

Maybe inline with line 68