add ostream operator