contains finished and added some new data members