improved for extending