again an if cascade. Use helpers and subclasses to hide that at least