First commit of these classes. Not tested yet.