all three types can work