Contains main implementation.