whole bunch of changes, should commit more often!