A method of running an application on a computing device, in which the computing device runs a first operating system (11; 31) (such as a thin web client operating system, such as Chrome OS) and the application runs on a second operating system (13; 33) (such as a fully-fledged operating system, such as Microsoft Windows (RTM), Mac OS X (RTM), Linux (RTM)), the computing device comprising storage (7) and a processor (2), the method comprising: loading an container package (12; 32) into the storage (7) and executing the container package (12; 32) on the processor (7), the container package (12; 32) acting as an emulator for the second operating system (13; 33); installing into the container package (12; 32) at least one application package (15; 35) each containing application code for the second operating system (13; 33); and running each application package (15; 35) on the processor (7), with the container package(12; 32) translating any requests that the application code makes to the second operating system