First version

Todo:
improve and enhance :D