writing abstract class for modelling process