generalizes states
adds minimum testing