better split this big block into small blocks for better readability. there is no overhead.