try hand at type classes
provide Reader and Writer type classes based on macros