implementes  all features. Something works shitty