simple validation framework