unit: rewrite fleet code as lexer