Refactored some and added stream overload