added support for implementing interfaces