refactored the assembly