changes
this needs testing, but i think it is getting close