used for intermediate class