optional->required
code optimization