Add specifcation pattern and entity framework support