updated to use plistlib