Add the start of the implementation

Add a couple of enums to structure the implementation and introduced
some classes to represent formatted pieces of text