Share installation code; introduce base class