added persistence layer