functionality implementation,new classes/interface