better to move nodal variable check into the constructor