change to rwlock, increased chan buffer - that also needs a revisit