final tweaks, there was small bug with the has_changed variable