encoding is optional