Fluidware: An approach towards adaptive and scalable programming of the IoT