Started on the ACO code.
It's all very generic right now, so things may need some changing.