changes; refractored; necessary changes