handle user data mappings and missing data
add docstrings