refactored interface spec