Refactored Form system to get simple error handling and a clearer
interface