Mobile applications nowadays are developed either for a local (native) or for a client-server execution. However, applications in the future will be developed with cloud in mind, i.e. act as native applications, but do the heavy processing and storage in the cloud, deliver only needed parts and data at runtime and able to run offline. In order to better understand how to facilitate the building of mobile cloud-based applications, we have surveyed existing work in mobile computing through the prism of cloud computing principles. We provide an overview of the results from this survey, in particular, models of mobile cloud applications. We also highlight research challenges in the area of mobile cloud computing.