Melt butter in the bottom of a large pot. Add onion and sauté until onions are soft and beginning to brown around the edges. Whisk in flour, then whisk in broth gradually to prevent lumps. Stir in water, milk, salt, pepper, and potatoes. Bring to a boil and cook until potatoes are soft (about 20 minutes), stirring frequently to prevent sticking. When potatoes are soft, remove from heat and use a potato masher to break up the potato slices until desired consistency is reached. Stir in cream and serve immediately, topped with cheese if desired.