Repository refactoring and Initial fullscreen implementation

BaseRepository now takes care of boiler plate code that was repeated all
over
Initial fullscreen implementation