In a medium size pot melt butter. Add onion, carrot, celery and garlic; saute till tender. Add broccoli, broth, salt and pepper. Bring to a boil. Cover and reduce heat . Let simmer 10-15 minutes, or till broccoli is tender; turn to down to low. Then leave mixture chunky, or lightly puree mixture with either a blender or hand puree wand; set aside. In another small pot melt the butter. Whisk in flour till smooth and thickened. Slowly add the milk or cream, whisking constantly, till thickened and bubbly. Stir in cheeses and parsley. Add cheese mixture to pureed broccoli and stir till combined. Bring soup to serving temperature and serve.