Implemented toughest part (hopefully)