Explain what does each of the classes do