added require_a, readded exception message object, and added require_a testing to all functions