convert to specs, more modular structure
Merge pull request #1 from helioid/reorganize

convert to specs, more modular structure