Geneious developer Matt Kearse has written an explanation of how he built the the circular assembler included in the R7 update. Hopefully some of you find it useful!
http://blog.geneious.com/blog/bid/377459/Building-a-Circular-de-novo-Assembler
There are two approaches I could have taken to add circular contig support. The simple approach is at the end of the assembly process to circularize any contigs whose ends look sufficiently similar. The second more complex approach is to allow contigs to circularize during the assembly process and still allow similar sequences and contigs to merge into the circular contigs later. This approach is more robust and more likely to produce correct results. For example if we have two related species present in a data set, the ends of the temporary linear contigs may be sufficiently similar to merge into a large incorrect linear contig. But if we circularize during the assembly process, instead of merging they'll correctly circularize first.