I think its okay to refactor the function here to have a single "assemble" function, but all of those functions do simply the same.