Add ACP module and interface

This depends on PR #3 being merged first.

Note: If the acp module looks like a lot, it's not really, it's just that I commented every line :wink: 
Can we not continue to use this in an array?