renamed the whole form mixins and make the structure easier to understand