Rewrite for fun. Introduced modules and lap (assembly for the VM)