generate form dynamically