added self updating