add controller
add test (incomplete)