make sure we catch a failed login
a bunch of work on the programs UI