implemented push_value and push_var