better defintion for adding, committing, and pushing