Big commit all the functionality