Refactor common functionality to VIPManagedObject + tests