Documentation needs to be added throughout this file.