added Surface class