We love that you're interested in contributing to this project!

To make the process as painless as possible, we have just a couple of guidelines
that should make life easier for everyone involved.

## Prefer Pull Requests

If you know exactly how to implement the feature being suggested or fix the bug
being reported, please open a pull request instead of an issue. Pull requests are easier than
patches or inline code blocks for discussing and merging the changes.

If you can't make the change yourself, please open an issue after making sure
that one isn't already logged.

## Contributing Code

Fork this repository, make it awesomer (preferably in a branch named for the
topic), send a pull request!

All code contributions should match our [coding
conventions](https://github.com/github/objective-c-conventions).

Thanks for contributing! :boom::camel:
