explicit return types in Partial to work around gcc bug