implement set_var