abstract EOS class.