more ridiculous helpers that are longer and harder to read than the code they replace