added some tests to provide better coverage, small refactor
remove callable stuff, doesn't make sense here
small refactor
mark as a work in progress, include link to previous version