surface ctor