17a now optimised
16 is now faster