its been a while... massive refactoring of ui (final refactoring this time; finally decided to just write my own mvvm analogue wrapper for unity)