rewrote insert to allow insert at head. insert is now recursive as a result.
fixed tests to reflect new insert() method signature