Basic fleshing out.
Likely to change implementation, and package structure.