added surface data generation