platforms, some edge cases don't work, most things are done