improve interfaces