Initial commit moving code from the impulse repo and adding documentation.