form functionality complete