First commit(Still many problems in it)