Changes in the implementatin to extract the definition of the interfaces and have only the implementation