1, split complicated codes into two