breaking out general purpose validation stuff