added contruct function