agreed classes partially implemented