requiring q is not needed afaict