more flexible ways to work with different types of elements to sync model with