basic init, run, keylistening