cba to explain, worst code every, many changes