A method comprising: storing, by a mobile device in a memory of the mobile device , one or more unmanaged applications each comprising a corresponding application bundle; retrieving, by the mobile device from the memory , information associated with the one or more unmanaged applications ; displaying, by the mobile device via a user interface associated with the mobile device , a selectable object (706a-706f) for each unmanaged application, each selectable object comprising the retrieved information associated with the corresponding unmanaged application; receiving, by the mobile device via the user interface , a selection of a first selectable object associated with a first unmanaged application of the one or more unmanaged application; retrieving, by the mobile device from the memory , the application bundle corresponding to the first unmanaged application; decoding, by the mobile device , the retrieved application bundle corresponding to the first unmanaged application; modifying, by the mobile device , the decoded application bundle corresponding to the first unmanaged application by: adding a set of one or more policy-based control instructions, adding a library file, and inserting a hook configured to enable overriding of the set of one or more policy-based control instructions by calling out to a method in the library file; compiling, by the mobile device , the modified application bundle to generate a first managed application that is configured to operate in accordance with the set of one or more policy-based control instructions and that, based on the hook, is configured to enable the overriding of the set of one or more policy-based control instructions; and providing, by the mobile device , the first managed application. storing, by a mobile device in a memory of the mobile device , one or more unmanaged applications each comprising a corresponding application bundle; retrieving, by the mobile device from the memory , information associated with the one or more unmanaged applications ; displaying, by the mobile device via a user interface associated with the mobile device , a selectable object (706a-706f) for each unmanaged application, each selectable object comprising the retrieved information associated with the corresponding unmanaged application; receiving, by the mobile device via the user interface , a selection of a first selectable object associated with a first unmanaged application of the one or more unmanaged application; retrieving, by the mobile device from the memory , the application bundle corresponding to the first unmanaged application; decoding, by the mobile device , the retrieved application bundle corresponding to the first unmanaged application; modifying, by the mobile device , the decoded application bundle corresponding to the first unmanaged application by: adding a set of one or more policy-based control instructions, adding a library file, and inserting a hook configured to enable overriding of the set of one or more policy-based control instructions by calling out to a method in the library file; adding a set of one or more policy-based control instructions, adding a library file, and inserting a hook configured to enable overriding of the set of one or more policy-based control instructions by calling out to a method in the library file; compiling, by the mobile device , the modified application bundle to generate a first managed application that is configured to operate in accordance with the set of one or more policy-based control instructions and that, based on the hook, is configured to enable the overriding of the set of one or more policy-based control instructions; and providing, by the mobile device , the first managed application. <EOS>