fixed too many things to explain