A generic reusable implementation of the Repository design pattern.