making the design module generic