refactor to remove duplication and support new /tim/charges api endpoint
add stripe, potentials and contacts handling both server and client-side; abstract access methods for simplicity