Added interfaces for the actual design patterns