refactor controllers && add common controllers handling