This one may take a bit to write anyway.