elements refactored