put into better frame structure, controllers need to be seperated