it works with other types too