Function: split interface and implementation
Tweak some javadoc