added self call method