It's minor so far (you have fixed most occurences). By why adding extra fields to `$self`?