working on variant types -- in progress