added initial persistence implementation