TODO to extract persister boilerplate to separate class