these basic elements can vary