whole lot of changes hope I don't break it