optional should take into account empty strings
nest