small bug: use list* instead of cons