separation of definition and implementation part3