added other design and logic