work on variant structure (in progress)