much simpler API for customizing data format