[BONUS] use union in lval