simplified down to transaction types