added list(PrintStream)
added list(PrintWriter)
javadocs
refactoring
end to end test