split up using data mapper
separate functionality into mapper
add escaping for xss attacks
add save progress button