Add validation and presave logic