use extend self