split into many testable pieces. this may cause some more function call cost, but do not slow down rendering.