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