Make most functions generically accept lists or streams
Add some headers