Added snake origainal and did some refactoring