This would explain that there are some conditionals at the edge of the application to work out what type to initialise.