Learned a lot and hopefully will be able to implement it