This is still a work in progress, bear with me!