revised interface