refactored and exposed operator interface