split into sections for better automation