-----+++-+++-+---+-++--++-++++++++--++++-+---++-+-+--+-+++--+++--++-+--+-+--+