support bigger/complex value types in our transactional system. this support slows down small (int) datatypes MAYBE 3% (there's an added virtual call currently which we actually might be able to get rid of) but big (more than 8 bytes) value types are about 50% slower than 8 bytes values (tested with long double type, which only adds the malloc overhead not any copying/destructor overheads)