I've done some refactoring.

`.gitignore` file is a file where you could put file names that don't need to be committed, such as `Mac OS X .DS_Store` (an annoying file).
I made all objects into single file, and I made the loading of map asynchronous.