Can these blocks just be properties instead? I'm guessing they're basically all optional, so having to pass them all into the initializer is unfortunate.