More tests. More error checking. More flexibility with the extend method.