better UI; some edge cases, but functional