added self-updating capability