So I couldn't get my head around using `this.type` when I implemented this. If there is a more elegant way to get the methods return type parameterized then I would like to know.