Moved away from structural records
Corrected impl methods to specify Self