more smart wraper with predicates and multiple names layputs