perform transaction