We generalize the Shifting Bottleneck Procedure (SBP), proposed by Adams et al. in 1988 for jobshop scheduling, to solve various types of scheduling problems including openshops, assembly shops and shops where only a partial ordering on operations pertaining to each job or machine is specified. In its original version, SBP uses a clever definition of the bottleneck value of a machine to iteratively construct a schedule by solving a number of a certain one machine scheduling problem. We show how the same definition can be extended to measure the bottleneck value of a job. The optimization procedure then proceeds to iteratively fix both job and machine sequences. The outcome of this study is a unified solution procedure for solving various classes of scheduling problems, namely openshops, jobshops, assembly shops and shops with partial precedence constraints. Computational testing on a set of randomly generated problems demonstrates that performance depends on the distribution of the work content of jobs and machines: the higher the coefficient of variation of the work content, the better the solutions.