Updated class diagram. not good yet.