interface inversion