Problem: we specify our Error type in the return type of write_json_files. This doesn't really make sense, considering there are only a handful of errors in there that the json handler should actually return. Similar for all other engine traits. We should probably consider specific errors for each method?