In this paper, we consider the practical problem of scheduling traffic lights to reduce the average vehicle waiting times. We find that existing scheduling algorithms have lackluster performance. Instead, we introduce two algorithms. First, extended CMSM (eCMSM), which extends CMSM from a switch scheduling model to a general traffic-light scheduling model. We prove that eCMSM can optimally schedule any traffic batch. Second, we introduce Front-Pressure (FP), which aims to further reduce the average waiting time at general intersections. We then evaluate empirically these two algorithms. We find that when using them, the best average waiting time can be improved in 98% of the simulations when compared to several existing algorithms, most significantly in congested settings.