interfaces and innerclasses