more UI work, nearly complete with first pass