For this we are going to extend one abstract class and use a couple of interfaces. Do not be frightened, as the amount of code we are going to write will not be overwhelming. Creating an OptionModel The first step in creating a custom model is to define how Tapestry should handle a single object of those to be displayed by the Select component. Here we shall be thinking in terms of a single