 
 #define first(x)           (((object *) (x))->car)
 #define second(x)          (car(cdr(x)))
+#define cddr(x)            (cdr(cdr(x)))
 #define third(x)           (car(cdr(cdr(x))))
 #define fourth(x)          (car(cdr(cdr(cdr(x)))))
 

  int isnumber = (digitvalue(ch)<base);
  buffer[2] = '\0'; // In case variable is one letter

  while(!isspace(ch) && ch != ')' && index < buflen){
    buffer[index++] = ch;
    int temp = digitvalue(ch);
    result = result * base + temp;

  for (int i=0; i<workspacesize; i++) {
    object *obj = &workspace[i];
    int type = (obj->type) & 0x7FFF;
    if (marked(obj) && type >= PAIR) {
      if (car(obj) == (object *)((unsigned int)from | 0x8000)) 
        car(obj) = (object *)((unsigned int)to | 0x8000);
      if (cdr(obj) == from) cdr(obj) = to;
