working implementation of enum, simple and tuple type cons, can be improved