Made this work by copying too much code which was hidden away in dunder methods