Horizontal interactions as the source of CP violation