[UPDATE] change lval construction to return pointers to an lval