update with pseudo impl