Prior algorithms known for exactly solving Max 2-Sat improve upon the trivial upper bound only for very sparse instances. We present new algorithms for exactly solving (in fact, counting) weighted Max 2-Sat instances. One of them has a good performance if the underlying constraint graph has a small separator decomposition, another has a slightly improved worst case performance. For a 2-Sat instance F with n variables, the worst case running time is ˜O(2(1−1/( ˜d(F )−1))n ), where ˜d(F) is the average degree in the constraint graph defined by F. The algorithms and bounds actually are valid for any Max 2-Csp, whose clauses are over pairs of binary variables. We use strict α-gadgets introduced by Trevisan, Sorkin, Sudan, and Williamson to get the same upper bounds for problems like Max 3-Sat and Max Cut. We also introduce a notion of strict (α, β)-gadget to provide a framework that allows composition of gadgets. This framework allows us to obtain the same upper bounds for Max ...