some changes. Not stable yet