I feel we should explain each function here.