Initial port from Google Code