appears complete.  needs testing...