transactions must be passed as arrayreference