begin rework memory read and choose