Initial commit. The code is shit. I need to improve it.