Smartphone technology is going through revolutionary changes. As number of smartphones is exceeding the number of desktops, researchers are thinking of new ways to expand the capabilities of smartphones. Key problems that researchers are trying to solve include vendor lock-ins, isolation, security, and mobile cloud computing. Limited processing power, battery and storage are also an issue. Virtualization of mobile devices is believed to address most of these problems. This paper describes our work on virtualization of smartphones. Our work involves running virtual instances of smartphones on a single physical phone or cloud, as well as on-loading and off-loading application states to and from real and virtual smartphones. Research challenges we are facing include handling latency conditions, optimizing bandwidth usage, sharing resources, etc.