analytic stuff