proxy pattern and composite pattern