add description
use stream interface