add program to demonstrate interfaces and implementations