add stream and pagination for contacts

Feels like quite a bit of repetition for a subtle difference, but I think I'm bikeshedding this too much, happy with it staying as is.