added more comments. refactored more implementation. broke my own rules and change connector signatures (it was necessary, there were mistakes). probably some other stuff