added contract classes for interfaces