work on while (in progress; too tired)