Long-range part added. Middle-range in progress. NOT TESTED