pretty much done, maybe there will be some additional changes