implement schema parsing