added abstracted writers and added linker