one list => one object OBJ
and some other edits in order to clean the code
as adding ASSERT for checking the modes
and temporary streams to inore void lists