Add spec
Refactor for readability

- Divide conversions into multiple tasks
- Each converter class has a #convert method