Second Commit.

Bunches of classes… to support one functionality.