the previous one has a few bugs this one fixed them