added static assertions