redid surfaces as a class to abstract the book keeping, switched to numpy for hopefully faster performance