http://codepad.org/B50qjioM