Better working version
Better working code
latest changes