Currently, the read_routines reading functions create an in-memory representation of a netCDF file using a Python dictionary; the read_blocked_netcdf_header and read_blocked_netcdf_file functions in particular use a custom DataArray subclass of np.ndarray to attach variable metadata to a numpy array.
This would be accomplished in an easier-to-understand way using xarray, whose Dataset class is designed to accomplish exactly this more cleanly. However, xarray requires the name change from PR#76 from AetherModel/aether to actually work; after that is completed, read_routines should be refactored to use xr.Dataset instead.