1st version DONE! Need further modification