Split up Writer responsibilities. The general flow for writing a file is extracting th e library into a Node AST, transforming that Node AST into a target output format, and than a Writer which persists that output format to the target