garbage collection
add set! primitive