Everything except the implementation.