Add high level documentation here