more ideas and a nice code function, issue #14