a lot done, too much to explain