Weighted counting problems are a natural generalization of counting problems where a weight is associated with every computational path of polynomial-time non-deterministic Turing machines. The goal is to compute the sum of weights of all paths (instead of number of accepting paths). Useful properties and plenty of applications make them interesting. The definition captures even undecidable problems, but obtaining an exponentially small additive approximation is just as hard as solving conventional counting. We present a structured view by defining classes that depend on the functions that assign weights to paths and by showing their relationships and how they generalize counting problems. Weighted counting is flexible and allows us to cast...