Laurel Framework wrote in Hack - requires the HHVM