I followed a tutorial by Michael hartl