first pass on validation and initial plugin wrapper