splitting generation from setting