Squashed commit of the following:

commit 8f33ccac5c12d434f6153c8a417212bb80803c78
Author: Jacky Alciné <me@jalcine.me>
Date:   Sun Jul 20 00:33:31 2014 -0400

    Refactoring for module and checking ABI.

    Closes issue #21.