rename toObject back to toHash. update join to return array instead of object