implementing some of the optional items