please refer to my implementation plan in UserControl.java