add set! and define