added interfaces and classes