FINISHED ALL VERSIONS + FACTORED