Mostly functional. Needs some UI improvements