Create a place to abstract all platform differences.
Improve the error handling if not all required parameters exist.