added design and testing