some implmentations for ood and design patterns