Mostly implemented and commented Student