many updates. should have committed earlier