Intermediate commit where most of the methods have been implemented.