form implementation
merge from vaince