added doctrine implementation