introduced IVariable interface