resolves #8: use hasInterface()