refactor loading from plist