updated to fit new UML model