added all the basic necessary stuff