abstract can be base sometimes
restoring attributesToMap/mapToAttributes