```ruby
# lib/frecon/request_error.rb
#
# Copyright (C) 2014 Christopher Cooper, Sam Craig, Tiger Huang, Vincent Mai, Sam Mercier, and Kristofer Rye
#
# This file is part of FReCon, an API for scouting at FRC Competitions, which is
# licensed under the MIT license.  You should have received a copy of the MIT
# license with this program.  If not, please see
# <http://opensource.org/licenses/MIT>.

require "json"

class RequestError < StandardError
	def initialize(code, message = nil, context = nil)
		@code = code
		@message = message
		@context = context

		# If @message is a String or an Array,
		# generate a JSON string for the body and
		# store it in the @body variable.
		#
		# Notice that if @message is nil, neither
		# of these is tripped, so @body becomes nil.
		# This means that #return_value will instead
		# return just @code, which is similar to the
		# previous behavior.
		@body = case @message
		when String
			JSON.generate({ context: @context, errors: [ @message ] })
		when Array
			JSON.generate({ context: @context, errors: @message })
		end
	end

	# A Sinatra-compliant return value.
	def return_value
		if @body
			[@code, @body]
		else
			@code
		end
	end
end
```

Make RequestErrors a bit more concise.
user
```ruby
# lib/frecon/request_error.rb
#
# Copyright (C) 2014 Christopher Cooper, Sam Craig, Tiger Huang, Vincent Mai, Sam Mercier, and Kristofer Rye
#
# This file is part of FReCon, an API for scouting at FRC Competitions, which is
# licensed under the MIT license.  You should have received a copy of the MIT
# license with this program.  If not, please see
# <http://opensource.org/licenses/MIT>.

require "json"

class RequestError < StandardError
	attr_reader :return_value

	def initialize(code, message = nil, context = nil)
		@code = code
		@message = message
		@context = context

		# When @message is a String or an Array,
		# the return_value is set to a Sinatra-compliant
		# Array with @code being the first element and the
		# response body being the stringification of the
		# JSON stringification of @context and @message.
		#
		# If @message is a String, it is first put into an
		# array.
		#
		# If @message is neither a String nor an Array,
		# @return_value becomes simply @code.
		@return_value =
			case @message
			when String
				[@code, JSON.generate({ context: @context, errors: [ @message ] })]
			when Array
				[@code, JSON.generate({ context: @context, errors: @message })]
			else
				@code
			end
	end
end
```
assistant