remove envir
optimize list.merge
use map