update for 1.4, implemented save argument
accept input stream