added the set! primitive function