new interface, improved helper functions