there is probably a QueryInterface that should be used here