Abstracted out more code. Must change repitition rule implementation