Pretty much the complete working version 2.0