make this an interface