Document requirements for replace, and use it to implement key methods
Merge pull request #18 from cpennington/use-replace

Document requirements for replace, and use it to implement key methods