go to cypressf's repo for more up-to-date code as of march 30, 2014