basic interfaces
Not finished Stream logic