big rework, takewhile to do, rest done