fully compiles in verilog