Add most missing documentation and implement proper error propagation