Final upload

Still needs optimization and some final tweaking