warn on reflection
add trace
split feasible-and-fruitful to separate functions