adapter pattern modification
uml update
template method modification