A method of providing an abstraction layer between an application layer and one or more existing hardware components of a computing device, the method comprising: receiving a request for a resource from the application layer, the application layer being stored in a non-transitory medium of the computing device; determining a component type and a timing for performing a task according to the request for the resource; determining whether the one or more existing hardware components of the computing device correspond to the component type for performing the task based on a predetermined function of the one or more existing hardware components; obtaining, based on the timing, a timing schedule for providing a response to the request according to the timing; when the one or more existing hardware components of the computing device do not correspond to the component type for performing the task and have a hardware timing that does not correspond to the timing schedule: converting the task into a translated task readable by the one or more existing hardware components; providing the translated task and the timing schedule to an input/output, I/O, scheduler, the I/O scheduler interfacing with the one or more existing hardware components to generate an input or an output; receiving an input or an output from the I/O scheduler as a result of providing the translated task, and providing the input or the output to the application layer as an emulated input or an emulated output that mimics an expected input or an expected output of the component type with the timing receiving a request for a resource from the application layer, the application layer being stored in a non-transitory medium of the computing device; determining a component type and a timing for performing a task according to the request for the resource; determining whether the one or more existing hardware components of the computing device correspond to the component type for performing the task based on a predetermined function of the one or more existing hardware components; obtaining, based on the timing, a timing schedule for providing a response to the request according to the timing; when the one or more existing hardware components of the computing device do not correspond to the component type for performing the task and have a hardware timing that does not correspond to the timing schedule: converting the task into a translated task readable by the one or more existing hardware components; providing the translated task and the timing schedule to an input/output, I/O, scheduler, the I/O scheduler interfacing with the one or more existing hardware components to generate an input or an output; receiving an input or an output from the I/O scheduler as a result of providing the translated task, and providing the input or the output to the application layer as an emulated input or an emulated output that mimics an expected input or an expected output of the component type with the timing converting the task into a translated task readable by the one or more existing hardware components; providing the translated task and the timing schedule to an input/output, I/O, scheduler, the I/O scheduler interfacing with the one or more existing hardware components to generate an input or an output; receiving an input or an output from the I/O scheduler as a result of providing the translated task, and providing the input or the output to the application layer as an emulated input or an emulated output that mimics an expected input or an expected output of the component type with the timing