Created basic interfaces and their implementation