Implement portable version