fully working assembler