(this fixes the infinite loop issue, but adds redundant interface definitions because we can't use Five's bridging code)