A lot more refactoring, and using IEnumerable stuff to shorten the code. Floor switches now work.