Whose work does Foster update