diff --git a/lib/inventree/part.dart b/lib/inventree/part.dart
index 85ee6d86..4b86896e 100644
--- a/lib/inventree/part.dart
+++ b/lib/inventree/part.dart
@@ -303,9 +303,6 @@ class InvenTreePart extends InvenTreeModel {
     // Get the number of units being build for this Part
     double get building => double.tryParse(jsondata["building"].toString()) ?? 0;
 
-    // Get the number of BOM items in this Part (if it is an assembly)
-    int get bomItemCount => (jsondata["bom_items"] ?? 0) as int;
-
     // Get the number of BOMs this Part is used in (if it is a component)
     int get usedInCount => (jsondata["used_in"] ?? 0) as int;
 
diff --git a/lib/widget/part_detail.dart b/lib/widget/part_detail.dart
index 376d5480..7ac72256 100644
--- a/lib/widget/part_detail.dart
+++ b/lib/widget/part_detail.dart
@@ -2,16 +2,18 @@ import "package:flutter/material.dart";
 
 import "package:font_awesome_flutter/font_awesome_flutter.dart";
 
+import "package:inventree/api.dart";
 import "package:inventree/app_colors.dart";
 import "package:inventree/inventree/stock.dart";
 import "package:inventree/l10.dart";
 import "package:inventree/helpers.dart";
+import "package:inventree/inventree/part.dart";
+
 import "package:inventree/widget/attachment_widget.dart";
+import "package:inventree/widget/part_list.dart";
 import "package:inventree/widget/part_notes.dart";
 import "package:inventree/widget/progress.dart";
-import "package:inventree/inventree/part.dart";
 import "package:inventree/widget/category_display.dart";
-import "package:inventree/api.dart";
 import "package:inventree/widget/refreshable_state.dart";
 import "package:inventree/widget/part_image_widget.dart";
 import "package:inventree/widget/snacks.dart";
@@ -41,6 +43,8 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
 
   int attachmentCount = 0;
 
+  int bomCount = 0;
+
   @override
   String getAppBarTitle(BuildContext context) => L10().partDetails;
 
@@ -118,6 +122,12 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
         "part": part.pk.toString()
       }
     );
+
+    bomCount = await InvenTreePart().count(
+      filters: {
+        "in_bom_for": part.pk.toString(),
+      }
+    );
   }
 
   Future <void> _toggleStar() async {
@@ -296,14 +306,24 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
     // Tiles for an "assembly" part
     if (part.isAssembly) {
 
-      if (part.bomItemCount > 0) {
+      if (bomCount > 0) {
         tiles.add(
             ListTile(
                 title: Text(L10().billOfMaterials),
-                leading: FaIcon(FontAwesomeIcons.thList),
-                trailing: Text("${part.bomItemCount}"),
+                leading: FaIcon(FontAwesomeIcons.thList, color: COLOR_CLICK),
+                trailing: Text("${bomCount}"),
                 onTap: () {
-                  // TODO
+                  Navigator.push(
+                    context,
+                    MaterialPageRoute(
+                      builder: (context) => PartList(
+                        {
+                          "in_bom_for": "${part.pk}",
+                        },
+                        title: L10().billOfMaterials,
+                      )
+                    )
+                  );
                 }
             )
         );
@@ -583,7 +603,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
           icon: FaIcon(FontAwesomeIcons.boxes),
           label: L10().stock
         ),
-        // TODO - Add part actions
         BottomNavigationBarItem(
           icon: FaIcon(FontAwesomeIcons.wrench),
           label: L10().actions,
diff --git a/lib/widget/part_list.dart b/lib/widget/part_list.dart
index 528273f7..2be5e557 100644
--- a/lib/widget/part_list.dart
+++ b/lib/widget/part_list.dart
@@ -12,23 +12,27 @@ import "package:inventree/l10.dart";
 
 class PartList extends StatefulWidget {
 
-  const PartList(this.filters);
+  const PartList(this.filters, {this.title = ""});
+
+  final String title;
 
   final Map<String, String> filters;
 
   @override
-  _PartListState createState() => _PartListState(filters);
+  _PartListState createState() => _PartListState(filters, title);
 }
 
 
 class _PartListState extends RefreshableState<PartList> {
 
-  _PartListState(this.filters);
+  _PartListState(this.filters, this.title);
+
+  final String title;
 
   final Map<String, String> filters;
 
   @override
-  String getAppBarTitle(BuildContext context) => L10().parts;
+  String getAppBarTitle(BuildContext context) => title.isNotEmpty ? title : L10().parts;
 
   @override
   Widget getBody(BuildContext context) {