Comments added + private functions the ones that doesn't need to be public