factor valid to invalid_input
GESVLASWP pattern
further lazy evaluation of children