Should `var_name` really be part of the definition? By being included it affects equality, which doesn't seem right - the variable name is arbitrary.