safer explicit initialization