improved version
new sesign and functionality
another one