Implement assembly algorithm

Signed-off-by: Michael Barton <mail@michaelbarton.me.uk>