refactored persister