added updated uml diagram