changed most of the interesting stuff