make it const, move to stream
make discriminate const