initial button thread (untested)