1. A method of determining the floor and location of a device within an indoor space having multiple floors, comprising: gathering device Wi-Fi data and device Bluetooth data; determining at least one candidate location for each floor of the indoor location; determining the most likely location for each floor by combining the candidate location for each floor with step module data and anticipation module data; determining the floor and location of the device from the most likely location for each floor and the device movement history.