more design and implementation