add constructor overloading