Check configuration early, use primitive for singleParameter & some clean-up
Refactor common code to AvroListener