cairnswm code is a variant record, whats the problem with then?

of course they are not good for complex objects but they are very simple and easy to manage