char-based done