Started adding Surface implementation.