horizontal generation