add first version, work but not very test