Abstracting third-party software