Implemented many changes