valid? is better, ok to accept control characters