Making it work on desktop, Android and html5 (very badly on this target)...

.... plus many optimizations - almost everything is being recycled now