Add generic `char` pipe implementation