Implented some of the following pieces