Lots of changes, have prob broken other solutions