why not just `shell->put_char(c);` ?