make ask method optional
add generator generator