Bring implementation up to date with spec