use roots and support non-404 errors

closes #4