Refactor (again) the handling of default methods