The following are my experience and guesses, nothing scientific/official/thoroughly tested: > 1. can I assume that this is always going to work if u is 'a.'a ? Well, there is no type 'a.'a. You can have: type u = { everything: 'a . 'a } but this presupposes that values of type u are blocks (heap-allocated). Therefore, if you cast a boolean (true) to type u, and then try to access the everything field of the "new" value, you will get a segfault. 3. assuming the answer to 1. is No, is there a type u or a simple > manipulation which should work for any type t ? Or perhaps just for > polymorphic variants ? > type u = int this will work for any type. You can even do pointer manipulation with it (adding and subtracting even numbers of bytes). Sorry everybody. - Tom