can handle string input