repository pattern added