Rework serialiser speeup to not require partial or wrapper functions