closes #6 - adding generic repository pattern.