add controller

decompose controller