By assembling existing controls
By combining multipleXPages together
By creating a brand new widget from scratch
By writing the code for a brand new control