adds some user interaction and a few new methods