implemented a decent array of validators