Initial implementations of Consumer and Producer