replaced types working impl