Added variants. This is awful and needs to be refactored