test
add design patterns