Possible design improvement

I'm a Java not a Scala programmer (saying this I'm counting on pointing out what is not so well written from Scala programmers point of view :) ).
Also some names may be not so good, but I think this pull request is enough to show my idea.
Notes, doubts etc. are placed in file: `SK_CHANGE_README.md`