almost got types right