Added a parameter_pack trait
Preparing myself for variants
Implemented efficient variants