pattern return types