complicated, then simplified