Add SRS, update documentation, and minor refactoring