interfaces and object oriented programming