Finished First Version with Testing!