Minimal implementation with new interface