constructor and case classes added