make a interface/facade here?