more work on modernizing josh lib -- hopefully this doesn't break all the things