decouple txn from gui where possible. add timeout prefs