This implementation is for portability, so its not module specific and can be used on all programs utilizing those API's