The creation of mobile applications has much of its roots in traditional software development. The end result, however, is a software intended to utilize the unique features and hardware of mobile devices. Modern smartphones are equipped with Bluetooth, NFC, gyroscopic sensors, GPS, and cameras. They can be used for virtual or augmented reality, barcode scanning, and more. Mobile apps should utilize the full range of smartphone features, which is easier said than done.