added: initial implementation with unit tests