Break code into multiple files for clarity
Fixes #2: add Docker build instructions to README