Split into Core/Annex/Implementation functions