diveded section implementation into several sections