New approach. Need to be fihished.