added support for function interfaces