diff --git a/src/apps/deskbar/BarApp.cpp b/src/apps/deskbar/BarApp.cpp
index 3a5716a..f0fd9a6 100644
--- a/src/apps/deskbar/BarApp.cpp
+++ b/src/apps/deskbar/BarApp.cpp
@@ -205,6 +205,7 @@ TBarApp::SaveSettings()
 		storedSettings.AddBool("sortRunningApps", fSettings.sortRunningApps);
 		storedSettings.AddBool("superExpando", fSettings.superExpando);
 		storedSettings.AddBool("expandNewTeams", fSettings.expandNewTeams);
+		storedSettings.AddInt32("iconSize", fSettings.iconSize);
 		storedSettings.AddBool("autoRaise", fSettings.autoRaise);
 		storedSettings.AddBool("recentAppsEnabled",
 			fSettings.recentAppsEnabled);
@@ -240,6 +241,7 @@ TBarApp::InitSettings()
 	settings.sortRunningApps = false;
 	settings.superExpando = false;
 	settings.expandNewTeams = false;
+	settings.iconSize = kMinimumIconSize;
 	settings.autoRaise = false;
 	settings.recentAppsEnabled = true;
 	settings.recentDocsEnabled = true;
@@ -289,6 +291,7 @@ TBarApp::InitSettings()
 				&settings.sortRunningApps);
 			storedSettings.FindBool("superExpando", &settings.superExpando);
 			storedSettings.FindBool("expandNewTeams", &settings.expandNewTeams);
+			storedSettings.FindInt32("iconSize", (int32*)&settings.iconSize);
 			storedSettings.FindBool("autoRaise", &settings.autoRaise);
 			storedSettings.FindBool("recentAppsEnabled",
 				&settings.recentAppsEnabled);
@@ -461,6 +464,26 @@ TBarApp::MessageReceived(BMessage* message)
 			fBarWindow->Unlock();
 			break;
 
+		case kResizeTeamIcons:
+		{
+			int32 iconSize;
+
+			if (message->FindInt32("be:value", &iconSize) == B_OK)
+				fSettings.iconSize = iconSize * 8;
+
+			if (fSettings.iconSize < kMinimumIconSize)
+				fSettings.iconSize = kMinimumIconSize;
+			else if (fSettings.iconSize > kMaximumIconSize)
+				fSettings.iconSize = kMaximumIconSize;
+
+			ResizeTeamIcons();
+
+			fBarWindow->Lock();
+			BarView()->UpdatePlacement();
+			fBarWindow->Unlock();
+			break;
+		}
+
 		case 'TASK':
 			fSwitcherMessenger.SendMessage(message);
 			break;
@@ -624,11 +647,13 @@ TBarApp::AddTeam(team_id team, uint32 flags, const char* sig, entry_ref* ref)
 		name = ref->name;
 
 	BarTeamInfo* barInfo = new BarTeamInfo(new BList(), flags, strdup(sig),
-		new BBitmap(kIconRect, kIconFormat), strdup(name.String()));
+		new BBitmap(IconRect(), kIconFormat), strdup(ref->name));
+
+	if ((barInfo->flags & B_BACKGROUND_APP) == 0
+		&& strcasecmp(barInfo->sig, kDeskbarSignature) != 0)
+		FetchAppIcon(barInfo->sig, barInfo->icon);
 
 	barInfo->teams->AddItem((void*)team);
-	if (appMime.GetIcon(barInfo->icon, B_MINI_ICON) != B_OK)
-		appMime.GetTrackerIcon(barInfo->icon, B_MINI_ICON);
 
 	sBarTeamInfoList.AddItem(barInfo);
 
@@ -690,6 +715,20 @@ TBarApp::RemoveTeam(team_id team)
 
 
 void
+TBarApp::ResizeTeamIcons()
+{
+	for (int32 i = 0; i < sBarTeamInfoList.CountItems(); i++) {
+		BarTeamInfo* barInfo = (BarTeamInfo*)sBarTeamInfoList.ItemAt(i);
+		if ((barInfo->flags & B_BACKGROUND_APP) == 0
+			&& strcasecmp(barInfo->sig, kDeskbarSignature) != 0) {
+			barInfo->icon = new BBitmap(IconRect(), kIconFormat);
+			FetchAppIcon(barInfo->sig, barInfo->icon);
+		}
+	}
+}
+
+
+void
 TBarApp::ShowPreferencesWindow()
 {
 	if (fPreferencesWindow)
@@ -701,6 +740,30 @@ TBarApp::ShowPreferencesWindow()
 }
 
 
+void
+TBarApp::FetchAppIcon(const char* signature, BBitmap* icon)
+{
+	app_info appInfo;
+
+	if (be_roster->GetAppInfo(signature, &appInfo) == B_OK) {
+		BFile file(&appInfo.ref, B_READ_ONLY);
+		BAppFileInfo appMime(&file);
+		icon_size size = icon->Bounds().IntegerHeight() >= 31
+			? B_LARGE_ICON : B_MINI_ICON;
+
+		if (appMime.GetIcon(icon, size) != B_OK)
+			appMime.GetTrackerIcon(icon, size);
+	}
+}
+
+
+const BRect
+TBarApp::IconRect()
+{
+	return BRect(0, 0, fSettings.iconSize - 1, fSettings.iconSize - 1);
+}
+
+
 //	#pragma mark -
 
 
diff --git a/src/apps/deskbar/BarApp.h b/src/apps/deskbar/BarApp.h
index 6996151..4756c0b 100644
--- a/src/apps/deskbar/BarApp.h
+++ b/src/apps/deskbar/BarApp.h
@@ -80,6 +80,7 @@ const uint32 kTrackerFirst = 'TkFt';
 const uint32 kSortRunningApps = 'SAps';
 const uint32 kSuperExpando = 'SprE';
 const uint32 kExpandNewTeams = 'ExTm';
+const uint32 kResizeTeamIcons = 'RTIs';
 const uint32 kAutoRaise = 'AtRs';
 const uint32 kRestartTracker = 'Trak';
 
@@ -88,6 +89,11 @@ const uint32 kShutdownSystem = 301;
 const uint32 kRebootSystem = 302;
 const uint32 kSuspendSystem = 304;
 
+// icon size constants
+const int32 kMinimumIconSize = 16;
+const int32 kMaximumIconSize = 64;
+const int32 kIconSizeInterval = 8;
+
 /* --------------------------------------------- */
 
 struct desk_settings {
@@ -109,6 +115,7 @@ struct desk_settings {
 	bool sortRunningApps;
 	bool superExpando;
 	bool expandNewTeams;
+	int32 iconSize;
 	bool autoRaise;
 	bool recentAppsEnabled;
 	bool recentDocsEnabled;
@@ -126,7 +133,7 @@ class TBarApp : public BApplication {
 		TBarApp();
 		virtual ~TBarApp();
 
-		virtual	bool QuitRequested();
+		virtual bool QuitRequested();
 		virtual void MessageReceived(BMessage* message);
 		virtual void RefsReceived(BMessage* refs);
 
@@ -139,6 +146,7 @@ class TBarApp : public BApplication {
 
 		static void Subscribe(const BMessenger &subscriber, BList*);
 		static void Unsubscribe(const BMessenger &subscriber);
+		void ResizeTeamIcons();
 
 	private:
 		void AddTeam(team_id team, uint32 flags, const char* sig, entry_ref*);
@@ -148,6 +156,8 @@ class TBarApp : public BApplication {
 		void SaveSettings();
 
 		void ShowPreferencesWindow();
+		void FetchAppIcon(const char* signature, BBitmap* icon);
+		const BRect IconRect();
 
 		TBarWindow* fBarWindow;
 		BMessenger fSwitcherMessenger;
diff --git a/src/apps/deskbar/BarView.cpp b/src/apps/deskbar/BarView.cpp
index cac3472..980e76e 100644
--- a/src/apps/deskbar/BarView.cpp
+++ b/src/apps/deskbar/BarView.cpp
@@ -224,18 +224,21 @@ TBarView::PlaceBeMenu()
 		return;
 
 	float width = sMinimumWindowWidth;
+	desk_settings* settings = ((TBarApp*)be_app)->Settings();
 	BPoint loc(B_ORIGIN);
 	BRect menuFrame(fBarMenuBar->Frame());
 	if (fState == kFullState) {
 		fBarMenuBar->RemoveTeamMenu();
+		// TODO: Magic constants need explination
 		width = 8 + 16 + 8;
 		loc = Bounds().LeftTop();
 	} else if (fState == kExpandoState) {
 		// shows apps below tray
 		fBarMenuBar->RemoveTeamMenu();
-		if (fVertical)
+		if (fVertical) {
 			width += 1;
-		else
+			width += settings->iconSize - kMinimumIconSize;
+		} else
 			width = floorf(width) / 2;
 		loc = Bounds().LeftTop();
 	} else {
@@ -300,6 +303,7 @@ TBarView::PlaceApplicationBar(BRect screenFrame)
 	if (fState == kMiniState)
 		return;
 
+	desk_settings* settings = ((TBarApp*)be_app)->Settings();
 	BRect expandoFrame(0, 0, 0, 0);
 	if (fVertical) {
 		// top left/right
@@ -311,12 +315,14 @@ TBarView::PlaceApplicationBar(BRect screenFrame)
 		expandoFrame.bottom = expandoFrame.top + 1;
 		if (fState == kFullState)
 			expandoFrame.right = fBarMenuBar->Frame().Width();
-		else
-			expandoFrame.right = sMinimumWindowWidth;
+		else {
+			expandoFrame.right = sMinimumWindowWidth + settings->iconSize
+				- kMinimumIconSize;
+		}
 	} else {
 		// top or bottom
 		expandoFrame.top = 0;
-		expandoFrame.bottom = kHModeHeight;
+		expandoFrame.bottom = settings->iconSize + 4;
 		if (fTrayLocation != 0)
 			expandoFrame.right = fDragRegion->Frame().left - 1;
 		else
@@ -338,13 +344,15 @@ TBarView::GetPreferredWindowSize(BRect screenFrame, float* width, float* height)
 		windowHeight = screenFrame.bottom;
 		windowWidth = fBarMenuBar->Frame().Width();
 	} else if (fState == kExpandoState) {
+		desk_settings* settings = ((TBarApp*)be_app)->Settings();
 		if (fVertical) {
 			// top left or right
 			windowHeight = fExpando->Frame().bottom;
+			windowWidth += settings->iconSize - kMinimumIconSize;
 		} else {
 			// top or bottom, full
 			fExpando->CheckItemSizes(0);
-			windowHeight = kHModeHeight;
+			windowHeight = settings->iconSize + 4;
 			windowWidth = screenFrame.Width();
 		}
 	} else {
@@ -942,8 +950,10 @@ BRect
 TBarView::OffsetIconFrame(BRect rect) const
 {
 	BRect frame(Frame());
+	desk_settings* settings = ((TBarApp*)be_app)->Settings();
+
 	frame.left += fDragRegion->Frame().left + fReplicantTray->Frame().left
-		+ rect.left;
+		+ rect.left + settings->iconSize - kMinimumIconSize;
 	frame.top += fDragRegion->Frame().top + fReplicantTray->Frame().top
 		+ rect.top;
 
diff --git a/src/apps/deskbar/BarView.h b/src/apps/deskbar/BarView.h
index 8f4e5b8..8a60bb5 100644
--- a/src/apps/deskbar/BarView.h
+++ b/src/apps/deskbar/BarView.h
@@ -136,6 +136,7 @@ class TBarView : public BView {
 		TExpandoMenuBar* ExpandoMenuBar() const;
 		TBarMenuBar* BarMenuBar() const;
 		TDragRegion* DragRegion() const { return fDragRegion; }
+		TReplicantTray* ReplicantTray() const { return fReplicantTray; }
 
 	private:
 		friend class TBeMenu;
diff --git a/src/apps/deskbar/ExpandoMenuBar.cpp b/src/apps/deskbar/ExpandoMenuBar.cpp
index 739f076..adbdaf3 100644
--- a/src/apps/deskbar/ExpandoMenuBar.cpp
+++ b/src/apps/deskbar/ExpandoMenuBar.cpp
@@ -61,6 +61,7 @@ All rights reserved.
 
 const float kDefaultBeMenuWidth = 50.0f;
 const float kSepItemWidth = 5.0f;
+const float kIconPadding = 8.0f;
 
 const uint32 kMinimizeTeam = 'mntm';
 const uint32 kBringTeamToFront = 'bftm';
@@ -90,7 +91,6 @@ TExpandoMenuBar::TExpandoMenuBar(TBarView* bar, BRect frame, const char* name,
 {
 	SetItemMargins(0.0f, 0.0f, 0.0f, 0.0f);
 	SetFont(be_plain_font);
-	SetMaxContentWidth(sMinimumWindowWidth);
 }
 
 
@@ -134,6 +134,9 @@ TExpandoMenuBar::AttachedToWindow()
 
 	desk_settings* settings = ((TBarApp*)be_app)->Settings();
 
+	// Add in the width of the icon
+	width += settings->iconSize - kMinimumIconSize;
+
 	if (settings->sortRunningApps)
 		teamList.SortItems(CompareByName);
 
@@ -499,11 +502,11 @@ void
 TExpandoMenuBar::AddTeam(BList* team, BBitmap* icon, char* name,
 	char* signature)
 {
+	desk_settings* settings = ((TBarApp*)be_app)->Settings();
 	float itemWidth = fVertical ? fBarView->Bounds().Width()
-		: sMinimumWindowWidth;
+		: sMinimumWindowWidth + settings->iconSize - kMinimumIconSize;
 	float itemHeight = -1.0f;
 
-	desk_settings* settings = ((TBarApp*)be_app)->Settings();
 	TTeamMenuItem* item = new TTeamMenuItem(team, icon, name, signature,
 		itemWidth, itemHeight, fDrawLabel, fVertical);
 
@@ -606,39 +609,42 @@ TExpandoMenuBar::RemoveTeam(team_id team, bool partial)
 void
 TExpandoMenuBar::CheckItemSizes(int32 delta)
 {
-	float width = Frame().Width();
-	int32 count = CountItems();
+	if (fBarView->Vertical())
+		return;
+
+	float iconSize = ((TBarApp*)be_app)->Settings()->iconSize;
+	float maxContentWidth = sMinimumWindowWidth + iconSize -
+		kMinimumIconSize;
+
+	// There are 2 extra items:
+	//     The Be Menu
+	//     The little separator item
+	int32 count = CountItems() - 2;
+	float width = Frame().Width() - fBeMenuWidth - kSepItemWidth * 2;
+	float fullWidth = maxContentWidth * count + fBeMenuWidth + kSepItemWidth;
+
 	bool reset = false;
-	float newWidth = 0;
-	float fullWidth = (sMinimumWindowWidth * count);
-
-	if (!fBarView->Vertical()) {
-		// in this case there are 2 extra items:
-		//   - The Be Menu
-		//   - The little separator item
-		fullWidth = fullWidth - (sMinimumWindowWidth * 2)
-			+ (fBeMenuWidth + kSepItemWidth);
-		width -= (fBeMenuWidth + kSepItemWidth);
-		count -= 2;
-	}
+	float newWidth = 0.0f;
 
 	if (delta >= 0 && fullWidth > width) {
 		fOverflow = true;
 		reset = true;
-		newWidth = floorf(width / count);
+		//newWidth = floorf(width / count);
+		newWidth = kIconPadding + iconSize + kIconPadding;
 	} else if (delta < 0 && fOverflow) {
 		reset = true;
 		if (fullWidth > width)
-			newWidth = floorf(width / count);
+			newWidth = kIconPadding + iconSize + kIconPadding;
 		else
-			newWidth = sMinimumWindowWidth;
+			newWidth = maxContentWidth;
 	}
-	if (newWidth > sMinimumWindowWidth)
-		newWidth = sMinimumWindowWidth;
+
+	if (newWidth > maxContentWidth)
+		newWidth = maxContentWidth;
 
 	if (reset) {
 		SetMaxContentWidth(newWidth);
-		if (newWidth == sMinimumWindowWidth)
+		if (newWidth == maxContentWidth)
 			fOverflow = false;
 		InvalidateLayout();
 
@@ -647,6 +653,7 @@ TExpandoMenuBar::CheckItemSizes(int32 delta)
 			if (!item)
 				break;
 			item->SetOverrideWidth(newWidth);
+			item->SetDrawLabel(!fOverflow);
 		}
 
 		Invalidate();
diff --git a/src/apps/deskbar/PreferencesWindow.cpp b/src/apps/deskbar/PreferencesWindow.cpp
index bb378f1..59d369f 100644
--- a/src/apps/deskbar/PreferencesWindow.cpp
+++ b/src/apps/deskbar/PreferencesWindow.cpp
@@ -17,6 +17,7 @@
 #include <OpenWithTracker.h>
 #include <RadioButton.h>
 #include <SeparatorView.h>
+#include <Slider.h>
 
 #include <ctype.h>
 
@@ -55,6 +56,15 @@ PreferencesWindow::PreferencesWindow(BRect frame)
 		new BMessage(kSuperExpando));
 	fAppsExpandNew = new BCheckBox(B_TRANSLATE("Expand new applications"),
 		new BMessage(kExpandNewTeams));
+	fAppsIconSizeSlider = new BSlider("icon_size", B_TRANSLATE("Icon size"),
+		NULL, kMinimumIconSize / kIconSizeInterval,
+		kMaximumIconSize / kIconSizeInterval, B_HORIZONTAL);
+	fAppsIconSizeSlider->SetHashMarks(B_HASH_MARKS_BOTTOM);
+	fAppsIconSizeSlider->SetHashMarkCount(((kMaximumIconSize - kMinimumIconSize)
+		/ kIconSizeInterval) + 1);
+	fAppsIconSizeSlider->SetLimitLabels(B_TRANSLATE("Small"),
+		B_TRANSLATE("Large"));
+	fAppsIconSizeSlider->SetModificationMessage(new BMessage(kResizeTeamIcons));
 
 	fClockSeconds = new BCheckBox(B_TRANSLATE("Show seconds"),
 		new BMessage(kShowSeconds));
@@ -87,6 +97,7 @@ PreferencesWindow::PreferencesWindow(BRect frame)
 	fAppsSortTrackerFirst->SetValue(appSettings->trackerAlwaysFirst);
 	fAppsShowExpanders->SetValue(appSettings->superExpando);
 	fAppsExpandNew->SetValue(appSettings->expandNewTeams);
+	fAppsIconSizeSlider->SetValue(appSettings->iconSize / 8);
 
 	int32 docCount = appSettings->recentDocsCount;
 	int32 appCount = appSettings->recentAppsCount;
@@ -129,6 +140,7 @@ PreferencesWindow::PreferencesWindow(BRect frame)
 	fAppsSort->SetTarget(be_app);
 	fAppsSortTrackerFirst->SetTarget(be_app);
 	fAppsExpandNew->SetTarget(be_app);
+	fAppsIconSizeSlider->SetTarget(be_app);
 
 	fClockSeconds->SetTarget(replicantTray);
 
@@ -177,6 +189,7 @@ PreferencesWindow::PreferencesWindow(BRect frame)
 				.SetInsets(20, 0, 0, 0)
 				.Add(fAppsExpandNew)
 				.End()
+			.Add(fAppsIconSizeSlider)
 			.AddGlue()
 			.SetInsets(10, 10, 10, 10)
 			.End()
diff --git a/src/apps/deskbar/PreferencesWindow.h b/src/apps/deskbar/PreferencesWindow.h
index a45005c..92d6450 100644
--- a/src/apps/deskbar/PreferencesWindow.h
+++ b/src/apps/deskbar/PreferencesWindow.h
@@ -10,6 +10,7 @@
 #include <Button.h>
 #include <CheckBox.h>
 #include <RadioButton.h>
+#include <Slider.h>
 #include <StringView.h>
 #include <TextControl.h>
 #include <Window.h>
@@ -52,6 +53,7 @@ private:
 			BCheckBox*		fAppsSortTrackerFirst;
 			BCheckBox*		fAppsShowExpanders;
 			BCheckBox*		fAppsExpandNew;
+			BSlider*		fAppsIconSizeSlider;
 
 			BCheckBox*		fClockSeconds;
 
diff --git a/src/apps/deskbar/StatusView.cpp b/src/apps/deskbar/StatusView.cpp
index 620e84a..fe1b502 100644
--- a/src/apps/deskbar/StatusView.cpp
+++ b/src/apps/deskbar/StatusView.cpp
@@ -110,7 +110,7 @@ DumpList(BList* itemlist)
 		printf("no items in list\n");
 		return;
 	}
-	for (int32 i = count ; i >= 0 ; i--) {
+	for (int32 i = count; i >= 0; i--) {
 		DeskbarItemInfo* item = (DeskbarItemInfo*)itemlist->ItemAt(i);
 		if (!item)
 			continue;
@@ -137,11 +137,13 @@ TReplicantTray::TReplicantTray(TBarView* parent, bool vertical)
 	fAlignmentSupport(false)
 {
 	// init the minimum window width according to the logo.
+	desk_settings* settings = ((TBarApp*)be_app)->Settings();
 	const BBitmap* logoBitmap = AppResSet()->FindBitmap(B_MESSAGE_TYPE,
 		R_LeafLogoBitmap);
 	if (logoBitmap != NULL) {
 		sMinimumWindowWidth = max_c(sMinimumWindowWidth,
-			2 * (logoBitmap->Bounds().Width() + 8));
+			2 * (logoBitmap->Bounds().Width() + 8) + settings->iconSize
+			- kMinimumIconSize);
 		fMinimumTrayWidth = sMinimumWindowWidth - kGutter - kDragRegionWidth;
 	}
 }
@@ -196,7 +198,7 @@ TReplicantTray::DetachedFromWindow()
 void
 TReplicantTray::RememberClockSettings()
 {
-	if (fClock)	{
+	if (fClock) {
 		desk_settings* settings = ((TBarApp*)be_app)->Settings();
 
 		settings->timeShowSeconds = fClock->ShowingSeconds();
@@ -243,13 +245,13 @@ TReplicantTray::DealWithClock(bool showClock)
 
 /*! Width is set to a minimum of kMinimumReplicantCount by kMaxReplicantWidth
 	if not in multirowmode and greater than kMinimumReplicantCount
-	the width should be calculated based on the actual
-	replicant widths
+	the width should be calculated based on the actual replicant widths
 */
 void
 TReplicantTray::GetPreferredSize(float* preferredWidth, float* preferredHeight)
 {
 	float width = 0, height = kMinimumTrayHeight;
+	desk_settings* settings = ((TBarApp*)be_app)->Settings();
 
 	if (fMultiRowMode) {
 		if (fShelf->CountReplicants() > 0)
@@ -261,12 +263,16 @@ TReplicantTray::GetPreferredSize(float* preferredWidth, float* preferredHeight)
 		height = kGutter + (rowCount * kMaxReplicantHeight)
 			+ ((rowCount - 1) * kIconGap) + kGutter;
 		height = max(kMinimumTrayHeight, height);
-		width = fMinimumTrayWidth;
+
+		if (fBarView->Expando())
+			width = fMinimumTrayWidth + settings->iconSize - kMinimumIconSize;
+		else
+			width = fMinimumTrayWidth;
 	} else {
 		// if last replicant overruns clock then resize to accomodate
 		if (fShelf->CountReplicants() > 0) {
-			if (fBarView->ShowingClock()
-				&& fRightBottomReplicant.right + 6 >= fClock->Frame().left) {
+			if (fBarView->ShowingClock() && fRightBottomReplicant.right + 6
+				>= fClock->Frame().left) {
 				width = fRightBottomReplicant.right + 6
 					+ fClock->Frame().Width();
 			} else
@@ -275,6 +281,7 @@ TReplicantTray::GetPreferredSize(float* preferredWidth, float* preferredHeight)
 
 		// this view has a fixed minimum width
 		width = max(fMinimumTrayWidth, width);
+		height = kGutter + settings->iconSize + kGutter;
 	}
 
 	*preferredWidth = width;
@@ -1229,13 +1236,15 @@ TReplicantTray::AcceptAddon(BRect replicantFrame, BMessage* message)
 BPoint
 TReplicantTray::LocationForReplicant(int32 index, float width)
 {
+	desk_settings* settings = ((TBarApp*)be_app)->Settings();
 	BPoint loc(kIconGap + 1, kGutter + 1);
 
 	if (fMultiRowMode) {
 		// try to find free space in every row
 		for (int32 row = 0; ; loc.y += kMaxReplicantHeight + kIconGap, row++) {
 			// determine free space in this row
-			BRect rect(loc.x, loc.y, loc.x + fMinimumTrayWidth - kIconGap - 2.0,
+			BRect rect(loc.x, loc.y, loc.x + fMinimumTrayWidth
+				+ settings->iconSize - kMinimumIconSize - kIconGap - 2.0,
 				loc.y + kMaxReplicantHeight);
 			if (row == 0 && fBarView->ShowingClock())
 				rect.right -= fClock->Frame().Width() + kIconGap;
diff --git a/src/apps/deskbar/StatusView.h b/src/apps/deskbar/StatusView.h
index 31fb82f..9989e41 100644
--- a/src/apps/deskbar/StatusView.h
+++ b/src/apps/deskbar/StatusView.h
@@ -48,15 +48,16 @@ All rights reserved.
 const float kMaxReplicantHeight = 16.0f;
 const float kMaxReplicantWidth = 16.0f;
 const int32 kMinimumReplicantCount = 6;
-const int32	kIconGap = 2;
+const int32 kIconGap = 2;
 const int32 kGutter = 1;
 const int32 kDragRegionWidth = 6;
 
-// 1 pixel left gutter
+// 1 pixel for left gutter
 // space for replicant tray (6 items)
 // 6 pixel drag region
-const float kMinimumTrayWidth = kIconGap + (kMinimumReplicantCount * kIconGap)
-	+ (kMinimumReplicantCount * kMaxReplicantWidth) + kGutter;
+const float kMinimumTrayWidth = kIconGap
+		+ (kMinimumReplicantCount * kIconGap)
+		+ (kMinimumReplicantCount * kMaxReplicantWidth) + kGutter;
 const float kMinimumTrayHeight = kGutter + kMaxReplicantHeight + kGutter;
 
 extern float sMinimumWindowWidth;
diff --git a/src/apps/deskbar/TeamMenu.cpp b/src/apps/deskbar/TeamMenu.cpp
index 3053969..ade9dcb 100644
--- a/src/apps/deskbar/TeamMenu.cpp
+++ b/src/apps/deskbar/TeamMenu.cpp
@@ -85,7 +85,8 @@ TTeamMenu::AttachedToWindow()
 		if (((barInfo->flags & B_BACKGROUND_APP) == 0)
 			&& (strcasecmp(barInfo->sig, kDeskbarSignature) != 0)) {
 			TTeamMenuItem* item = new TTeamMenuItem(barInfo->teams,
-				barInfo->icon, barInfo->name, barInfo->sig, -1, -1, true, true);
+				barInfo->icon, barInfo->name, barInfo->sig, -1, -1, true,
+				true);
 
 			if ((settings->trackerAlwaysFirst)
 				&& (strcmp(barInfo->sig, kTrackerSignature) == 0))
diff --git a/src/apps/deskbar/TeamMenuItem.cpp b/src/apps/deskbar/TeamMenuItem.cpp
index a3f3619..727eb27 100644
--- a/src/apps/deskbar/TeamMenuItem.cpp
+++ b/src/apps/deskbar/TeamMenuItem.cpp
@@ -127,12 +127,12 @@ status_t
 TTeamMenuItem::Invoke(BMessage* message)
 {
 	if ((static_cast<TBarApp*>(be_app))->BarView()->InvokeItem(Signature()))
-		//	handles drop on application
+		// handles drop on application
 		return B_OK;
 
-	//	if the app could not handle the drag message
-	//	and we were dragging, then kill the drag
-	//	should never get here, disabled item will not invoke
+	// if the app could not handle the drag message
+	// and we were dragging, then kill the drag
+	// should never get here, disabled item will not invoke
 	TBarView* barview = (static_cast<TBarApp*>(be_app))->BarView();
 	if (barview && barview->Dragging())
 		barview->DragStop();
@@ -141,7 +141,7 @@ TTeamMenuItem::Invoke(BMessage* message)
 	uint32 mods = modifiers();
 	if (mods & B_CONTROL_KEY) {
 		TShowHideMenuItem::TeamShowHideCommon((mods & B_SHIFT_KEY)
-				? B_MINIMIZE_WINDOW : B_BRING_TO_FRONT, Teams());
+			? B_MINIMIZE_WINDOW : B_BRING_TO_FRONT, Teams());
 	}
 
 	return BMenuItem::Invoke(message);
@@ -170,6 +170,13 @@ TTeamMenuItem::SetOverrideSelected(bool selected)
 }
 
 
+void
+TTeamMenuItem::SetDrawLabel(bool drawLabel)
+{
+	fDrawLabel = drawLabel;
+}
+
+
 float
 TTeamMenuItem::LabelWidth() const
 {
@@ -206,23 +213,27 @@ TTeamMenuItem::GetContentSize(float* width, float* height)
 	if (fIcon)
 		iconBounds = fIcon->Bounds();
 	else
-		iconBounds = BRect(0, 0, 15, 15);
+		iconBounds = BRect(0, 0, kMinimumIconSize - 1, kMinimumIconSize - 1);
 
 	BMenuItem::GetContentSize(width, height);
 
 	if (fOverrideWidth != -1.0f)
 		*width = fOverrideWidth;
-	else
-		*width = kHPad + iconBounds.Width() + kLabelOffset + fLabelWidth + kHPad
-			+ 20;
+	else {
+		*width = kHPad + iconBounds.Width() + kLabelOffset;
+		if (fDrawLabel)
+			*width += LabelWidth() + kHPad + 10.0f;
+	}
 
 	if (fOverrideHeight != -1.0f)
 		*height = fOverrideHeight;
 	else {
 		*height = iconBounds.Height();
-		float labelHeight = fLabelAscent + fLabelDescent;
-		if (labelHeight > *height)
-			*height = labelHeight;
+		if (fDrawLabel) {
+			float labelHeight = fLabelAscent + fLabelDescent;
+			if (labelHeight > *height)
+				*height = labelHeight;
+		}
 		*height += (kVPad * 2) + 2;
 	}
 	*height += 2;
diff --git a/src/apps/deskbar/TeamMenuItem.h b/src/apps/deskbar/TeamMenuItem.h
index 9bfd28b..851d029 100644
--- a/src/apps/deskbar/TeamMenuItem.h
+++ b/src/apps/deskbar/TeamMenuItem.h
@@ -62,6 +62,7 @@ class TTeamMenuItem : public BMenuItem {
 		void SetOverrideWidth(float width);
 		void SetOverrideHeight(float height);
 		void SetOverrideSelected(bool selected);
+		void SetDrawLabel(bool drawLabel);
 
 		bool IsExpanded();
 		void ToggleExpandState(bool resizeWindow);
diff --git a/src/apps/deskbar/TimeView.cpp b/src/apps/deskbar/TimeView.cpp
index 96a7936..f6d50bb 100644
--- a/src/apps/deskbar/TimeView.cpp
+++ b/src/apps/deskbar/TimeView.cpp
@@ -332,10 +332,15 @@ TTimeView::Pulse()
 			Update();
 
 		strlcpy(fLastTimeStr, fTimeStr, sizeof(fLastTimeStr));
-		strlcpy(fLastDateStr, fDateStr, sizeof(fLastDateStr));
 		fNeedToUpdate = true;
 	}
 
+	// Update the tooltip if the date has changed
+	if (strcmp(fDateStr, fLastDateStr) != 0) {
+		strlcpy(fLastDateStr, fDateStr, sizeof(fLastDateStr));
+		SetToolTip(fDateStr);
+	}
+
 	if (fNeedToUpdate) {
 		fSeconds = ct->tm_sec;
 		fMinute = ct->tm_min;
