some slight modifications
added second form generation outline