Make KBucket{x} generic instead of abstract type, add node lookup fsm