Base code with optional SEMI and WS working :)