fix bug when cdr pair… add lots of functions