refactor to allow configuration of options
whitespace
lint