function formatting
formatters need to format things
shouldn't need to be abstract, part of implementation
rename and move
update the readme with basic use