I'd break this down into a regular if... else block for readability (it runs over 120).