more generic element stuff