Major overhaul of the functional interface for 1.0 release.