some tricks to improve compilation speed / ::value compiles quicker than {}