added everything, need to tweak and make it functional