first commit of transactional stuff. not complete. couple of bug fixes
equals and hashcode