add iterative implementation; config via generic 'design_type'