requires php >= 5.4