View holder implementation

Replaces #155