package manager abstraction