maybe implemented swing streams