requires php >= 5.3