not sure if it applies, but have you considered to use variants?