replaced by beter solution