adding extra class and modify some methods