Add live reload feature

Resolves #8