Abstract model and adapter that should be working somehow (not yet
tested)