Rinse potatoes with water and slice into 1 inch chunks (I keep the skins on, but you can peel them if you want to)
Place potato chunks into a large pot and fill with water about 1 inch above the potatoes
Bring potatoes to a boil and continue cooking until they are tender and easily pierced with a fork, about 15-25 minutes depending on the size of your chunks
Drain potatoes and place in a large mixing bowl
Add butter, salt, pepper, and cream cheese, and beat with an electric mixer until smooth
Slowly pour in milk, 2 tablespoons at a time, until you get a creamy consistency (you may not need the whole ½ cup)
Add optional add-ins (see notes below) if using them and blend until incorporated
Serve immediately
Store leftovers in an airtight container in the fridge for up to 3 days