Separate the GTK components and abstractions to a separate module where they can be used by other user interfaces. This module includes the model, the view and abstraction that populates the model.