added complete thing still have to perfectionize it