change to interfaces