added tentative UML for OO redesign