separation between structure and customization