From 45f9c0a5792526279ebf5ffa6a4853c7e2de6dd6 Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Sun, 10 Mar 2013 22:45:00 -0400
Subject: blocks: moved file sink and base and descriptor source/sink to
 gr-blocks.

---
 gr-blocks/python/qa_file_source_sink.py | 93 +++++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)
 create mode 100644 gr-blocks/python/qa_file_source_sink.py

(limited to 'gr-blocks/python/qa_file_source_sink.py')

diff --git a/gr-blocks/python/qa_file_source_sink.py b/gr-blocks/python/qa_file_source_sink.py
new file mode 100644
index 0000000000..d1d67074d5
--- /dev/null
+++ b/gr-blocks/python/qa_file_source_sink.py
@@ -0,0 +1,93 @@
+#!/usr/bin/env python
+#
+# Copyright 2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+from gnuradio import gr, gr_unittest
+import blocks_swig as blocks
+import os
+
+class test_file_source_sink(gr_unittest.TestCase):
+
+    def setUp (self):
+        self.tb = gr.top_block ()
+
+    def tearDown (self):
+        self.tb = None
+
+    def test_001(self):
+        src_data = range(1000)
+        expected_result = range(1000)
+
+        filename = "tmp.32f"
+        src = gr.vector_source_f(src_data)
+        snk = blocks.file_sink(gr.sizeof_float, filename)
+        snk.set_unbuffered(True)
+
+        src2 = blocks.file_source(gr.sizeof_float, filename)
+        snk2 = gr.vector_sink_f()
+
+        self.tb.connect(src, snk)
+        self.tb.run()
+
+        self.tb.disconnect(src, snk)
+        self.tb.connect(src2, snk2)
+        self.tb.run()
+
+        os.remove(filename)
+
+        result_data = snk2.data()
+        self.assertFloatTuplesAlmostEqual(expected_result, result_data)
+
+    def test_descriptor_001(self):
+        src_data = range(1000)
+        expected_result = range(1000)
+
+        filename = "tmp.32f"
+        fhandle0 = open(filename, "wb")
+        fd0 = fhandle0.fileno()
+
+        src = gr.vector_source_f(src_data)
+        snk = blocks.file_descriptor_sink(gr.sizeof_float, fd0)
+
+        self.tb.connect(src, snk)
+        self.tb.run()
+        os.fsync(fd0)
+        fhandle0.close()
+
+        fhandle1 = open(filename, "rb")
+        fd1 = fhandle1.fileno()
+        src2 = blocks.file_descriptor_source(gr.sizeof_float, fd1, False)
+        snk2 = gr.vector_sink_f()
+
+        self.tb.disconnect(src, snk)
+        self.tb.connect(src2, snk2)
+        self.tb.run()
+        os.fsync(fd1)
+        fhandle1.close()
+
+        os.remove(filename)
+
+        result_data = snk2.data()
+        self.assertFloatTuplesAlmostEqual(expected_result, result_data)
+
+if __name__ == '__main__':
+    gr_unittest.run(test_file_source_sink, "test_file_source_sink.xml")
+
-- 
cgit v1.2.3


From 3e33c4655ca02d831ecef17f30264afc962965af Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Wed, 13 Mar 2013 18:55:01 -0400
Subject: audio: minor master merge fix.

blocks: fix QA to turn off controlport (should generalize this).
---
 gr-audio/lib/CMakeLists.txt             | 2 +-
 gr-blocks/python/qa_file_source_sink.py | 1 +
 gr-blocks/python/qa_udp_source_sink.py  | 1 +
 3 files changed, 3 insertions(+), 1 deletion(-)

(limited to 'gr-blocks/python/qa_file_source_sink.py')

diff --git a/gr-audio/lib/CMakeLists.txt b/gr-audio/lib/CMakeLists.txt
index 36acd8f43b..73977752f3 100644
--- a/gr-audio/lib/CMakeLists.txt
+++ b/gr-audio/lib/CMakeLists.txt
@@ -33,7 +33,7 @@ link_directories(${Boost_LIBRARY_DIRS})
 link_directories(${LOG4CPP_LIBRARY_DIRS})
 
 list(APPEND gr_audio_libs gnuradio-core ${Boost_LIBRARIES} ${LOG4CPP_LIBRARIES})
-list(APPEND gr_audio_sources gr_audio_registry.cc)
+list(APPEND gr_audio_sources audio_registry.cc)
 list(APPEND gr_audio_confs ${CMAKE_CURRENT_SOURCE_DIR}/gr-audio.conf)
 
 if(ENABLE_GR_CTRLPORT)
diff --git a/gr-blocks/python/qa_file_source_sink.py b/gr-blocks/python/qa_file_source_sink.py
index d1d67074d5..2898f760ec 100644
--- a/gr-blocks/python/qa_file_source_sink.py
+++ b/gr-blocks/python/qa_file_source_sink.py
@@ -27,6 +27,7 @@ import os
 class test_file_source_sink(gr_unittest.TestCase):
 
     def setUp (self):
+        os.environ['GR_CONF_CONTROLPORT_ON'] = 'False'
         self.tb = gr.top_block ()
 
     def tearDown (self):
diff --git a/gr-blocks/python/qa_udp_source_sink.py b/gr-blocks/python/qa_udp_source_sink.py
index 6ebbf87afc..bd558b2e25 100644
--- a/gr-blocks/python/qa_udp_source_sink.py
+++ b/gr-blocks/python/qa_udp_source_sink.py
@@ -29,6 +29,7 @@ from threading import Timer
 class test_udp_sink_source(gr_unittest.TestCase):
 
     def setUp(self):
+        os.environ['GR_CONF_CONTROLPORT_ON'] = 'False'
         self.tb_snd = gr.top_block()
         self.tb_rcv = gr.top_block()
 
-- 
cgit v1.2.3


From d4f6b86a9bdea09c2c158b9982559a727f8c6a0b Mon Sep 17 00:00:00 2001
From: Tom Rondeau <trondeau@vt.edu>
Date: Sun, 17 Mar 2013 12:24:38 -0400
Subject: blocks: converting references to vector source/sink, null
 source/sink, nop, copy, head, skiphead, vector_map, and annotator blocks to
 use gr-blocks.

---
 docs/doxygen/other/main_page.dox                   |   6 +-
 docs/sphinx/gnuradio_sphinx.py                     |   4 +-
 docs/sphinx/source/gr/index.rst                    |  25 --
 docs/sphinx/source/gr/misc_blk.rst                 |   4 -
 docs/sphinx/source/gr/sink_blk.rst                 |   6 -
 docs/sphinx/source/gr/slicedice_blk.rst            |   5 -
 docs/sphinx/source/gr/source_blk.rst               |   6 -
 gnuradio-core/CMakeLists.txt                       |   2 -
 .../src/examples/ctrlport/pfb_sync_test-qt.grc     |  12 +-
 .../src/examples/ctrlport/pfb_sync_test.grc        |   6 +-
 .../src/examples/mp-sched/affinity_set.py          |  19 +-
 gnuradio-core/src/examples/mp-sched/synthetic.py   |  11 +-
 .../src/examples/network/vector_source.py          |   4 +-
 .../src/examples/volk_benchmark/volk_test_funcs.py |   7 +-
 gnuradio-core/src/lib/CMakeLists.txt               |   1 -
 gnuradio-core/src/lib/filter/CMakeLists.txt        |   1 -
 gnuradio-core/src/lib/filter/gr_rotator.h          |  54 ---
 gnuradio-core/src/lib/filter/qa_rotator.cc         |  81 ----
 gnuradio-core/src/lib/filter/qa_rotator.h          |  45 ---
 gnuradio-core/src/lib/general/CMakeLists.txt       |  13 +-
 gnuradio-core/src/lib/general/general.i            |  29 +-
 gnuradio-core/src/lib/general/general_generated.i  |  26 --
 gnuradio-core/src/lib/general/gr_annotator_1to1.cc | 107 -----
 gnuradio-core/src/lib/general/gr_annotator_1to1.h  |  75 ----
 gnuradio-core/src/lib/general/gr_annotator_1to1.i  |  25 --
 .../src/lib/general/gr_annotator_alltoall.cc       | 110 -----
 .../src/lib/general/gr_annotator_alltoall.h        |  76 ----
 .../src/lib/general/gr_annotator_alltoall.i        |  25 --
 gnuradio-core/src/lib/general/gr_annotator_raw.cc  | 106 -----
 gnuradio-core/src/lib/general/gr_annotator_raw.h   |  69 ----
 gnuradio-core/src/lib/general/gr_annotator_raw.i   |  26 --
 gnuradio-core/src/lib/general/gr_copy.cc           |  71 ----
 gnuradio-core/src/lib/general/gr_copy.h            |  63 ---
 gnuradio-core/src/lib/general/gr_copy.i            |  36 --
 gnuradio-core/src/lib/general/gr_endian_swap.cc    | 101 -----
 gnuradio-core/src/lib/general/gr_endian_swap.h     |  57 ---
 gnuradio-core/src/lib/general/gr_endian_swap.i     |  31 --
 gnuradio-core/src/lib/general/gr_endianness.h      |  27 ++
 gnuradio-core/src/lib/general/gr_head.cc           |  62 ---
 gnuradio-core/src/lib/general/gr_head.h            |  61 ---
 gnuradio-core/src/lib/general/gr_head.i            |  33 --
 gnuradio-core/src/lib/general/gr_kludge_copy.cc    |  64 ---
 gnuradio-core/src/lib/general/gr_kludge_copy.h     |  56 ---
 gnuradio-core/src/lib/general/gr_kludge_copy.i     |  31 --
 gnuradio-core/src/lib/general/gr_nop.cc            |  92 -----
 gnuradio-core/src/lib/general/gr_nop.h             |  67 ---
 gnuradio-core/src/lib/general/gr_nop.i             |  34 --
 gnuradio-core/src/lib/general/gr_null_sink.cc      |  49 ---
 gnuradio-core/src/lib/general/gr_null_sink.h       |  53 ---
 gnuradio-core/src/lib/general/gr_null_sink.i       |  31 --
 gnuradio-core/src/lib/general/gr_null_source.cc    |  52 ---
 gnuradio-core/src/lib/general/gr_null_source.h     |  52 ---
 gnuradio-core/src/lib/general/gr_null_source.i     |  31 --
 gnuradio-core/src/lib/general/gr_skiphead.cc       | 108 -----
 gnuradio-core/src/lib/general/gr_skiphead.h        |  80 ----
 gnuradio-core/src/lib/general/gr_skiphead.i        |  35 --
 gnuradio-core/src/lib/general/gr_vector_map.cc     | 117 ------
 gnuradio-core/src/lib/general/gr_vector_map.h      |  83 ----
 gnuradio-core/src/lib/general/gr_vector_map.i      |  28 --
 gnuradio-core/src/lib/gengen/CMakeLists.txt        | 143 -------
 gnuradio-core/src/lib/gengen/generate_all.py       |  33 --
 gnuradio-core/src/lib/gengen/generate_common.py    |  60 ---
 gnuradio-core/src/lib/gengen/gengen.i              |  29 --
 gnuradio-core/src/lib/gengen/gr_endianness.h       |  27 --
 gnuradio-core/src/lib/gengen/gr_endianness.i       |  23 --
 .../src/lib/gengen/gr_vector_insert_X.cc.t         | 100 -----
 .../src/lib/gengen/gr_vector_insert_X.h.t          |  61 ---
 .../src/lib/gengen/gr_vector_insert_X.i.t          |  37 --
 gnuradio-core/src/lib/gengen/gr_vector_sink_X.cc.t |  73 ----
 gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t  |  61 ---
 gnuradio-core/src/lib/gengen/gr_vector_sink_X.i.t  |  40 --
 .../src/lib/gengen/gr_vector_source_X.cc.t         | 124 ------
 .../src/lib/gengen/gr_vector_source_X.h.t          |  64 ---
 .../src/lib/gengen/gr_vector_source_X.i.t          |  37 --
 gnuradio-core/src/lib/runtime/CMakeLists.txt       |   8 -
 gnuradio-core/src/lib/runtime/gr_basic_block.h     |   6 +-
 gnuradio-core/src/lib/runtime/gr_top_block.h       |   4 +-
 gnuradio-core/src/lib/runtime/qa_block_tags.cc     | 448 ---------------------
 gnuradio-core/src/lib/runtime/qa_block_tags.h      |  52 ---
 gnuradio-core/src/lib/runtime/qa_gr_block.cc       |  88 ----
 gnuradio-core/src/lib/runtime/qa_gr_block.h        |  48 ---
 gnuradio-core/src/lib/runtime/qa_gr_flowgraph.cc   | 245 -----------
 gnuradio-core/src/lib/runtime/qa_gr_flowgraph.h    |  75 ----
 gnuradio-core/src/lib/runtime/qa_gr_hier_block2.cc |  57 ---
 gnuradio-core/src/lib/runtime/qa_gr_hier_block2.h  |  42 --
 .../src/lib/runtime/qa_gr_hier_block2_derived.cc   |  87 ----
 .../src/lib/runtime/qa_gr_hier_block2_derived.h    |  41 --
 gnuradio-core/src/lib/runtime/qa_gr_top_block.cc   | 285 -------------
 gnuradio-core/src/lib/runtime/qa_gr_top_block.h    |  66 ---
 gnuradio-core/src/lib/runtime/qa_runtime.cc        |   6 -
 .../src/lib/runtime/qa_set_msg_handler.cc          |  79 ----
 gnuradio-core/src/lib/runtime/qa_set_msg_handler.h |  43 --
 .../src/lib/runtime/test_shared_block_ptr.cc       |  10 +-
 gnuradio-core/src/lib/swig/CMakeLists.txt          |   4 +-
 gnuradio-core/src/lib/swig/gnuradio_core.py        |   1 -
 gnuradio-core/src/lib/swig/gnuradio_core_gengen.i  |  32 --
 .../src/python/gnuradio/ctrlport/GrDataPlotter.py  |  14 +-
 .../python/gnuradio/ctrlport/qa_cpp_py_binding.py  | 172 --------
 .../gnuradio/ctrlport/qa_cpp_py_binding_set.py     | 150 -------
 .../src/python/gnuradio/gr/qa_block_gateway.py     | 255 ------------
 gnuradio-core/src/python/gnuradio/gr/qa_copy.py    |  58 ---
 .../src/python/gnuradio/gr/qa_endian_swap.py       |  66 ---
 gnuradio-core/src/python/gnuradio/gr/qa_head.py    |  47 ---
 .../src/python/gnuradio/gr/qa_hier_block2.py       | 397 ------------------
 .../src/python/gnuradio/gr/qa_kludge_copy.py       |  91 -----
 .../gnuradio/gr/qa_python_message_passing.py       | 123 ------
 .../src/python/gnuradio/gr/qa_skiphead.py          | 102 -----
 .../src/python/gnuradio/gr/qa_vector_insert.py     |  58 ---
 .../src/python/gnuradio/gr/qa_vector_map.py        | 105 -----
 .../python/gnuradio/gr/qa_vector_sink_source.py    |  65 ---
 gnuradio-core/src/tests/CMakeLists.txt             |   1 -
 gnuradio-core/src/tests/test_all.cc                |   2 -
 gnuradio-core/src/tests/test_buffers.py            |   5 +-
 gnuradio-core/src/tests/test_runtime.cc            |  42 --
 gr-analog/examples/fmtest.py                       |   8 +-
 gr-analog/examples/tags/uhd_burst_detector.py      |   4 +-
 gr-analog/python/CMakeLists.txt                    |   2 +
 gr-analog/python/qa_agc.py                         |  27 +-
 gr-analog/python/qa_cpfsk.py                       |   7 +-
 gr-analog/python/qa_ctcss_squelch.py               |  11 +-
 gr-analog/python/qa_dpll.py                        |   7 +-
 gr-analog/python/qa_fmdet.py                       |   7 +-
 gr-analog/python/qa_frequency_modulator.py         |   7 +-
 gr-analog/python/qa_phase_modulator.py             |   7 +-
 gr-analog/python/qa_plateau_detector_fb.py         |   7 +-
 gr-analog/python/qa_pll_carriertracking.py         |   7 +-
 gr-analog/python/qa_pll_freqdet.py                 |   7 +-
 gr-analog/python/qa_pll_refout.py                  |   7 +-
 gr-analog/python/qa_probe_avg_mag_sqrd.py          |  11 +-
 gr-analog/python/qa_pwr_squelch.py                 |  11 +-
 gr-analog/python/qa_quadrature_demod.py            |   7 +-
 gr-analog/python/qa_rail_ff.py                     |   7 +-
 gr-analog/python/qa_sig_source.py                  |  43 +-
 gr-analog/python/qa_simple_squelch.py              |   7 +-
 gr-analog/python/wfm_rcv_fmdet.py                  |   4 +-
 gr-analog/python/wfm_rcv_pll.py                    |   4 +-
 gr-atsc/python/qa_atsc.py                          |   6 +-
 gr-audio/examples/python/audio_to_file.py          |   4 +-
 gr-audio/examples/python/dial_tone_wav.py          |   6 +-
 gr-audio/examples/python/spectrum_inversion.py     |   4 +-
 gr-blocks/examples/metadata/file_metadata_sink.grc |  10 +-
 .../metadata/file_metadata_vector_sink.grc         |  14 +-
 gr-blocks/examples/msg_passing/strobe.grc          |   8 +-
 gr-blocks/examples/tags/test_file_tags.py          |   8 +-
 gr-blocks/include/blocks/nop.h                     |   3 +
 gr-blocks/lib/CMakeLists.txt                       |   4 +
 gr-blocks/lib/annotator_1to1_impl.cc               |   6 +-
 gr-blocks/lib/annotator_alltoall_impl.cc           |   6 +-
 gr-blocks/lib/annotator_raw_impl.cc                |   2 +-
 gr-blocks/lib/nop_impl.cc                          |  22 +
 gr-blocks/lib/nop_impl.h                           |   6 +
 gr-blocks/lib/qa_block_tags.cc                     | 212 +++++-----
 gr-blocks/lib/qa_gr_block.cc                       |  89 ++++
 gr-blocks/lib/qa_gr_block.h                        |  48 +++
 gr-blocks/lib/qa_gr_flowgraph.cc                   | 245 +++++++++++
 gr-blocks/lib/qa_gr_flowgraph.h                    |  75 ++++
 gr-blocks/lib/qa_gr_hier_block2.cc                 |  55 +++
 gr-blocks/lib/qa_gr_hier_block2.h                  |  42 ++
 gr-blocks/lib/qa_gr_hier_block2_derived.cc         |  87 ++++
 gr-blocks/lib/qa_gr_hier_block2_derived.h          |  41 ++
 gr-blocks/lib/qa_gr_top_block.cc                   | 285 +++++++++++++
 gr-blocks/lib/qa_gr_top_block.h                    |  66 +++
 gr-blocks/lib/qa_set_msg_handler.cc                |  78 ++++
 gr-blocks/lib/qa_set_msg_handler.h                 |  43 ++
 gr-blocks/python/qa_add_mult_div_sub.py            |  58 +--
 gr-blocks/python/qa_add_mult_v.py                  |  34 +-
 gr-blocks/python/qa_argmax.py                      |  10 +-
 gr-blocks/python/qa_bin_statistics.py              |   8 +-
 gr-blocks/python/qa_block_gateway.py               | 256 ++++++++++++
 gr-blocks/python/qa_boolean_operators.py           |  58 +--
 gr-blocks/python/qa_burst_tagger.py                |   4 +-
 gr-blocks/python/qa_conjugate.py                   |  10 +-
 gr-blocks/python/qa_copy.py                        |   2 +-
 gr-blocks/python/qa_cpp_py_binding.py              | 174 ++++++++
 gr-blocks/python/qa_cpp_py_binding_set.py          | 152 +++++++
 gr-blocks/python/qa_delay.py                       |   8 +-
 gr-blocks/python/qa_file_metadata.py               |  14 +-
 gr-blocks/python/qa_file_source_sink.py            |   8 +-
 gr-blocks/python/qa_hier_block2.py                 | 398 ++++++++++++++++++
 gr-blocks/python/qa_integrate.py                   |  28 +-
 gr-blocks/python/qa_interleave.py                  |  28 +-
 gr-blocks/python/qa_keep_m_in_n.py                 |  18 +-
 gr-blocks/python/qa_keep_one_in_n.py               |  10 +-
 gr-blocks/python/qa_max.py                         |   8 +-
 gr-blocks/python/qa_message.py                     |   8 +-
 gr-blocks/python/qa_moving_average.py              |   8 +-
 gr-blocks/python/qa_multiply_conjugate.py          |  12 +-
 gr-blocks/python/qa_mute.py                        |  12 +-
 gr-blocks/python/qa_nlog10.py                      |  10 +-
 gr-blocks/python/qa_pack_k_bits.py                 |  12 +-
 gr-blocks/python/qa_packed_to_unpacked.py          |  76 ++--
 gr-blocks/python/qa_patterned_interleaver.py       |  12 +-
 gr-blocks/python/qa_pdu.py                         |   2 +-
 gr-blocks/python/qa_peak_detector.py               |  12 +-
 gr-blocks/python/qa_peak_detector2.py              |   4 +-
 gr-blocks/python/qa_pipe_fittings.py               |  18 +-
 gr-blocks/python/qa_probe_signal.py                |   4 +-
 gr-blocks/python/qa_python_message_passing.py      | 124 ++++++
 gr-blocks/python/qa_regenerate.py                  |   8 +-
 gr-blocks/python/qa_repack_bits_bb.py              |  20 +-
 gr-blocks/python/qa_repeat.py                      |  10 +-
 gr-blocks/python/qa_rms.py                         |  12 +-
 gr-blocks/python/qa_sample_and_hold.py             |   6 +-
 gr-blocks/python/qa_stream_mux.py                  |  20 +-
 gr-blocks/python/qa_stretch.py                     |   8 +-
 gr-blocks/python/qa_tag_debug.py                   |   2 +-
 gr-blocks/python/qa_tag_file_sink.py               |   4 +-
 gr-blocks/python/qa_tagged_stream_mux.py           |   6 +-
 gr-blocks/python/qa_threshold.py                   |   4 +-
 gr-blocks/python/qa_transcendental.py              |  12 +-
 gr-blocks/python/qa_type_conversions.py            | 170 ++++----
 gr-blocks/python/qa_udp_source_sink.py             |  10 +-
 gr-blocks/python/qa_unpack_k_bits.py               |   8 +-
 gr-blocks/python/qa_vco.py                         |   8 +-
 gr-blocks/python/qa_vector_insert.py               |   4 +-
 gr-channels/python/CMakeLists.txt                  |   2 +
 gr-channels/python/qa_channel_model.py             |   9 +-
 gr-channels/python/qa_fading_model.py              |   9 +-
 gr-digital/examples/berawgn.py                     |   6 +-
 gr-digital/examples/example_costas.py              |  11 +-
 gr-digital/examples/example_fll.py                 |  15 +-
 gr-digital/examples/example_timing.py              |  17 +-
 gr-digital/examples/gen_whitener.py                |   7 +-
 gr-digital/examples/narrowband/benchmark_rx.py     |   4 +-
 gr-digital/examples/narrowband/benchmark_tx.py     |   4 +-
 gr-digital/examples/narrowband/digital_bert_rx.py  |   4 +-
 gr-digital/examples/narrowband/digital_bert_tx.py  |   6 +-
 gr-digital/examples/narrowband/rx_voice.py         |   4 +-
 gr-digital/examples/narrowband/tx_voice.py         |   4 +-
 gr-digital/examples/ofdm/benchmark_rx.py           |   4 +-
 gr-digital/examples/ofdm/benchmark_tx.py           |   4 +-
 gr-digital/examples/ofdm/ofdm_bugsquatch.py        |   6 +-
 gr-digital/examples/ofdm/rx_ofdm.grc               |   6 +-
 gr-digital/examples/ofdm/tx_ofdm.grc               |  14 +-
 gr-digital/examples/snr_estimators.py              |   7 +-
 gr-digital/python/ofdm.py                          |   4 +-
 gr-digital/python/ofdm_sync_fixed.py               |   8 +-
 gr-digital/python/ofdm_txrx.py                     |   4 +-
 gr-digital/python/qa_binary_slicer_fb.py           |   7 +-
 gr-digital/python/qa_chunks_to_symbols.py          |  27 +-
 gr-digital/python/qa_clock_recovery_mm.py          |  19 +-
 gr-digital/python/qa_cma_equalizer.py              |   7 +-
 gr-digital/python/qa_constellation.py              |   4 +-
 gr-digital/python/qa_constellation_decoder_cb.py   |  11 +-
 gr-digital/python/qa_constellation_receiver.py     |   4 +-
 gr-digital/python/qa_correlate_access_code.py      |  15 +-
 gr-digital/python/qa_costas_loop_cc.py             |  23 +-
 gr-digital/python/qa_cpm.py                        |  10 +-
 gr-digital/python/qa_crc32_bb.py                   |  22 +-
 gr-digital/python/qa_diff_encoder.py               |  15 +-
 gr-digital/python/qa_diff_phasor_cc.py             |   7 +-
 gr-digital/python/qa_fll_band_edge.py              |  12 +-
 gr-digital/python/qa_framer_sink.py                |  11 +-
 gr-digital/python/qa_glfsr_source.py               |   7 +-
 gr-digital/python/qa_header_payload_demux.py       |   9 +-
 gr-digital/python/qa_lms_equalizer.py              |   7 +-
 gr-digital/python/qa_map.py                        |   7 +-
 gr-digital/python/qa_mpsk_receiver.py              |  11 +-
 gr-digital/python/qa_mpsk_snr_est.py               |   9 +-
 gr-digital/python/qa_ofdm_carrier_allocator_cvc.py |  16 +-
 gr-digital/python/qa_ofdm_chanest_vcvc.py          |  30 +-
 gr-digital/python/qa_ofdm_cyclic_prefixer.py       |  15 +-
 gr-digital/python/qa_ofdm_frame_equalizer_vcvc.py  |  15 +-
 gr-digital/python/qa_ofdm_insert_preamble.py       |  10 +-
 gr-digital/python/qa_ofdm_serializer_vcc.py        |  22 +-
 gr-digital/python/qa_ofdm_sync_sc_cfb.py           |  32 +-
 gr-digital/python/qa_ofdm_txrx.py                  |  15 +-
 gr-digital/python/qa_packet_headergenerator_bb.py  |  17 +-
 gr-digital/python/qa_packet_headerparser_b.py      |   2 +-
 gr-digital/python/qa_pfb_clock_sync.py             |  11 +-
 gr-digital/python/qa_pn_correlator_cc.py           |   6 +-
 gr-digital/python/qa_probe_density.py              |   9 +-
 gr-digital/python/qa_scale_tags.py                 |   6 +-
 gr-digital/python/qa_scrambler.py                  |  15 +-
 gr-digital/python/qa_simple_correlator.py          |   4 +-
 gr-digital/python/qa_simple_framer.py              |   7 +-
 gr-digital/python/qa_ts_insert_zeros.py            |   8 +-
 gr-fec/python/qa_ecc_ccsds_27.py                   |   6 +-
 gr-fft/python/qa_fft.py                            |  12 +-
 gr-fft/python/qa_goertzel.py                       |   5 +-
 gr-filter/examples/benchmark_filters.py            |   9 +-
 gr-filter/examples/channelize.py                   |   8 +-
 gr-filter/examples/chirp_channelize.py             |  10 +-
 gr-filter/examples/decimate.py                     |   8 +-
 gr-filter/examples/fft_filter_ccc.py               |   7 +-
 gr-filter/examples/fir_filter_ccc.py               |   7 +-
 gr-filter/examples/fir_filter_fff.py               |   7 +-
 gr-filter/examples/interpolate.py                  |  10 +-
 gr-filter/examples/reconstruction.py               |  11 +-
 gr-filter/examples/resampler.py                    |  11 +-
 gr-filter/examples/synth_filter.py                 |   7 +-
 gr-filter/examples/synth_to_chan.py                |   8 +-
 .../include/filter/freq_xlating_fir_filter_XXX.h.t |   1 -
 gr-filter/lib/CMakeLists.txt                       |   2 +
 gr-filter/lib/freq_xlating_fir_filter_XXX_impl.h.t |   3 +-
 gr-filter/python/qa_adaptive_fir_filter.py         |  19 +-
 gr-filter/python/qa_dc_blocker.py                  |  19 +-
 gr-filter/python/qa_fft_filter.py                  |  67 +--
 gr-filter/python/qa_filter_delay_fc.py             |  17 +-
 gr-filter/python/qa_fir_filter.py                  |  47 +--
 gr-filter/python/qa_fractional_interpolator.py     |  11 +-
 gr-filter/python/qa_freq_xlating_fir_filter.py     |  51 +--
 gr-filter/python/qa_hilbert.py                     |   7 +-
 gr-filter/python/qa_iir_filter.py                  |  35 +-
 gr-filter/python/qa_interp_fir_filter.py           |   7 +-
 gr-filter/python/qa_pfb_arb_resampler.py           |  11 +-
 gr-filter/python/qa_pfb_channelizer.py             |   6 +-
 gr-filter/python/qa_pfb_decimator.py               |  12 +-
 gr-filter/python/qa_pfb_interpolator.py            |   7 +-
 gr-filter/python/qa_pfb_synthesizer.py             |   7 +-
 gr-filter/python/qa_rational_resampler.py          |  43 +-
 gr-filter/python/qa_single_pole_iir.py             |  26 +-
 gr-howto-write-a-block/apps/howto_square.grc       |   2 +-
 gr-howto-write-a-block/apps/howto_square.py        |   2 +-
 gr-howto-write-a-block/lib/qa_square2_ff.cc        |  10 +-
 gr-howto-write-a-block/lib/qa_square_ff.cc         |  10 +-
 gr-howto-write-a-block/python/qa_howto.py          |  15 +-
 gr-pager/apps/usrp_flex_all                        |   4 +-
 gr-pager/apps/usrp_rx_flex.grc                     |  24 +-
 gr-pager/apps/usrp_rx_flex.py                      |  17 +-
 gr-qtgui/apps/gr_constellation_plot                |   5 +-
 gr-qtgui/apps/gr_psd_plot_c                        |   3 +-
 gr-qtgui/apps/gr_psd_plot_f                        |   3 +-
 gr-qtgui/apps/gr_spectrogram_plot_c                |   3 +-
 gr-qtgui/apps/gr_spectrogram_plot_f                |   3 +-
 gr-qtgui/apps/gr_time_plot_c                       |   3 +-
 gr-qtgui/apps/gr_time_plot_f                       |   3 +-
 gr-qtgui/apps/gr_time_raster_b                     |   3 +-
 gr-qtgui/apps/gr_time_raster_f                     |   3 +-
 gr-qtgui/apps/plot_base.py                         |   8 +-
 gr-qtgui/apps/plot_psd_base.py                     |   2 +-
 gr-qtgui/apps/plot_spectrogram_base.py             |   2 +-
 gr-qtgui/apps/plot_time_base.py                    |   2 +-
 gr-qtgui/apps/plot_time_raster_base.py             |   2 +-
 gr-qtgui/apps/qt_digital.py                        |   2 +-
 gr-qtgui/examples/pyqt_time_raster_b.py            |   7 +-
 gr-qtgui/examples/pyqt_time_raster_f.py            |   6 +-
 gr-shd/apps/shd_rx_cfile                           |   6 +-
 gr-trellis/doc/gr-trellis.xml                      |   8 +-
 gr-trellis/doc/test_tcm.py                         |   2 +-
 gr-trellis/doc/test_tcm.py.xml                     |   2 +-
 gr-trellis/doc/test_viterbi_equalization1.py       |   6 +-
 gr-trellis/doc/test_viterbi_equalization1.py.xml   |   6 +-
 gr-trellis/examples/python/test_cpm.py             |  14 +-
 gr-trellis/examples/python/test_pccc_turbo1.py     |   6 +-
 gr-trellis/examples/python/test_sccc_hard.py       |   2 +-
 gr-trellis/examples/python/test_sccc_soft.py       |   4 +-
 gr-trellis/examples/python/test_sccc_turbo.py      |   4 +-
 gr-trellis/examples/python/test_sccc_turbo1.py     |   2 +-
 gr-trellis/examples/python/test_sccc_turbo2.py     |   2 +-
 gr-trellis/examples/python/test_tcm.py             |   6 +-
 gr-trellis/examples/python/test_tcm_bit.py         |   6 +-
 gr-trellis/examples/python/test_tcm_combined.py    |   2 +-
 gr-trellis/examples/python/test_tcm_parallel.py    |   2 +-
 .../examples/python/test_turbo_equalization.py     |   4 +-
 .../examples/python/test_turbo_equalization1.py    |   6 +-
 .../examples/python/test_turbo_equalization2.py    |   6 +-
 .../examples/python/test_viterbi_equalization.py   |   2 +-
 .../examples/python/test_viterbi_equalization1.py  |   6 +-
 gr-trellis/python/qa_trellis.py                    |   2 +-
 gr-uhd/apps/uhd_rx_cfile                           |   6 +-
 gr-uhd/examples/grc/uhd_rx_dpsk.grc                |   6 +-
 gr-uhd/examples/python/max_power.py                |   3 +-
 gr-uhd/examples/python/usrp_tv_rcv.py              |   4 +-
 gr-uhd/examples/python/usrp_tv_rcv_nogui.py        |   4 +-
 gr-vocoder/python/qa_alaw_vocoder.py               |  11 +-
 gr-vocoder/python/qa_codec2_vocoder.py             |  11 +-
 gr-vocoder/python/qa_cvsd_vocoder.py               |  22 +-
 gr-vocoder/python/qa_g721_vocoder.py               |  11 +-
 gr-vocoder/python/qa_g723_24_vocoder.py            |  11 +-
 gr-vocoder/python/qa_g723_40_vocoder.py            |  11 +-
 gr-vocoder/python/qa_gsm_full_rate.py              |  11 +-
 gr-vocoder/python/qa_ulaw_vocoder.py               |  11 +-
 gr-wavelet/python/qa_classify.py                   |  26 +-
 gr-wxgui/python/common.py                          |   3 +-
 grc/blocks/block_tree.xml                          |  19 -
 grc/blocks/gr_copy.xml                             |  75 ----
 grc/blocks/gr_endian_swap.xml                      |  41 --
 grc/blocks/gr_head.xml                             |  65 ---
 grc/blocks/gr_kludge_copy.xml                      |  68 ----
 grc/blocks/gr_mpsk_sync_cc.xml                     |  69 ----
 grc/blocks/gr_nop.xml                              |  68 ----
 grc/blocks/gr_null_sink.xml                        |  54 ---
 grc/blocks/gr_null_source.xml                      |  54 ---
 grc/blocks/gr_skiphead.xml                         |  65 ---
 grc/blocks/gr_vector_insert_x.xml                  |  80 ----
 grc/blocks/gr_vector_sink_x.xml                    |  54 ---
 grc/blocks/gr_vector_source_x.xml                  |  86 ----
 grc/blocks/random_source_x.xml                     |   2 +-
 grc/grc_gnuradio/blks2/packet.py                   |   8 +-
 grc/grc_gnuradio/blks2/selector.py                 |  12 +-
 391 files changed, 3879 insertions(+), 9088 deletions(-)
 delete mode 100644 docs/sphinx/source/gr/slicedice_blk.rst
 delete mode 100644 gnuradio-core/src/lib/filter/gr_rotator.h
 delete mode 100644 gnuradio-core/src/lib/filter/qa_rotator.cc
 delete mode 100644 gnuradio-core/src/lib/filter/qa_rotator.h
 delete mode 100644 gnuradio-core/src/lib/general/general_generated.i
 delete mode 100644 gnuradio-core/src/lib/general/gr_annotator_1to1.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_annotator_1to1.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_annotator_1to1.i
 delete mode 100644 gnuradio-core/src/lib/general/gr_annotator_alltoall.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_annotator_alltoall.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_annotator_alltoall.i
 delete mode 100644 gnuradio-core/src/lib/general/gr_annotator_raw.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_annotator_raw.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_annotator_raw.i
 delete mode 100644 gnuradio-core/src/lib/general/gr_copy.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_copy.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_copy.i
 delete mode 100644 gnuradio-core/src/lib/general/gr_endian_swap.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_endian_swap.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_endian_swap.i
 create mode 100644 gnuradio-core/src/lib/general/gr_endianness.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_head.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_head.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_head.i
 delete mode 100644 gnuradio-core/src/lib/general/gr_kludge_copy.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_kludge_copy.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_kludge_copy.i
 delete mode 100644 gnuradio-core/src/lib/general/gr_nop.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_nop.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_nop.i
 delete mode 100644 gnuradio-core/src/lib/general/gr_null_sink.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_null_sink.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_null_sink.i
 delete mode 100644 gnuradio-core/src/lib/general/gr_null_source.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_null_source.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_null_source.i
 delete mode 100644 gnuradio-core/src/lib/general/gr_skiphead.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_skiphead.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_skiphead.i
 delete mode 100644 gnuradio-core/src/lib/general/gr_vector_map.cc
 delete mode 100644 gnuradio-core/src/lib/general/gr_vector_map.h
 delete mode 100644 gnuradio-core/src/lib/general/gr_vector_map.i
 delete mode 100644 gnuradio-core/src/lib/gengen/CMakeLists.txt
 delete mode 100755 gnuradio-core/src/lib/gengen/generate_all.py
 delete mode 100755 gnuradio-core/src/lib/gengen/generate_common.py
 delete mode 100644 gnuradio-core/src/lib/gengen/gengen.i
 delete mode 100644 gnuradio-core/src/lib/gengen/gr_endianness.h
 delete mode 100644 gnuradio-core/src/lib/gengen/gr_endianness.i
 delete mode 100644 gnuradio-core/src/lib/gengen/gr_vector_insert_X.cc.t
 delete mode 100644 gnuradio-core/src/lib/gengen/gr_vector_insert_X.h.t
 delete mode 100644 gnuradio-core/src/lib/gengen/gr_vector_insert_X.i.t
 delete mode 100644 gnuradio-core/src/lib/gengen/gr_vector_sink_X.cc.t
 delete mode 100644 gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t
 delete mode 100644 gnuradio-core/src/lib/gengen/gr_vector_sink_X.i.t
 delete mode 100644 gnuradio-core/src/lib/gengen/gr_vector_source_X.cc.t
 delete mode 100644 gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t
 delete mode 100644 gnuradio-core/src/lib/gengen/gr_vector_source_X.i.t
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_block_tags.cc
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_block_tags.h
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_gr_block.cc
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_gr_block.h
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_gr_flowgraph.cc
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_gr_flowgraph.h
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_gr_hier_block2.cc
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_gr_hier_block2.h
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_gr_hier_block2_derived.cc
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_gr_hier_block2_derived.h
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_gr_top_block.cc
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_gr_top_block.h
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_set_msg_handler.cc
 delete mode 100644 gnuradio-core/src/lib/runtime/qa_set_msg_handler.h
 delete mode 100644 gnuradio-core/src/lib/swig/gnuradio_core_gengen.i
 delete mode 100755 gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py
 delete mode 100755 gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding_set.py
 delete mode 100644 gnuradio-core/src/python/gnuradio/gr/qa_block_gateway.py
 delete mode 100755 gnuradio-core/src/python/gnuradio/gr/qa_copy.py
 delete mode 100644 gnuradio-core/src/python/gnuradio/gr/qa_endian_swap.py
 delete mode 100755 gnuradio-core/src/python/gnuradio/gr/qa_head.py
 delete mode 100755 gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
 delete mode 100755 gnuradio-core/src/python/gnuradio/gr/qa_kludge_copy.py
 delete mode 100644 gnuradio-core/src/python/gnuradio/gr/qa_python_message_passing.py
 delete mode 100755 gnuradio-core/src/python/gnuradio/gr/qa_skiphead.py
 delete mode 100755 gnuradio-core/src/python/gnuradio/gr/qa_vector_insert.py
 delete mode 100644 gnuradio-core/src/python/gnuradio/gr/qa_vector_map.py
 delete mode 100755 gnuradio-core/src/python/gnuradio/gr/qa_vector_sink_source.py
 delete mode 100644 gnuradio-core/src/tests/test_runtime.cc
 create mode 100644 gr-blocks/lib/qa_gr_block.cc
 create mode 100644 gr-blocks/lib/qa_gr_block.h
 create mode 100644 gr-blocks/lib/qa_gr_flowgraph.cc
 create mode 100644 gr-blocks/lib/qa_gr_flowgraph.h
 create mode 100644 gr-blocks/lib/qa_gr_hier_block2.cc
 create mode 100644 gr-blocks/lib/qa_gr_hier_block2.h
 create mode 100644 gr-blocks/lib/qa_gr_hier_block2_derived.cc
 create mode 100644 gr-blocks/lib/qa_gr_hier_block2_derived.h
 create mode 100644 gr-blocks/lib/qa_gr_top_block.cc
 create mode 100644 gr-blocks/lib/qa_gr_top_block.h
 create mode 100644 gr-blocks/lib/qa_set_msg_handler.cc
 create mode 100644 gr-blocks/lib/qa_set_msg_handler.h
 create mode 100644 gr-blocks/python/qa_block_gateway.py
 create mode 100755 gr-blocks/python/qa_cpp_py_binding.py
 create mode 100755 gr-blocks/python/qa_cpp_py_binding_set.py
 create mode 100755 gr-blocks/python/qa_hier_block2.py
 create mode 100644 gr-blocks/python/qa_python_message_passing.py
 delete mode 100644 grc/blocks/gr_copy.xml
 delete mode 100644 grc/blocks/gr_endian_swap.xml
 delete mode 100644 grc/blocks/gr_head.xml
 delete mode 100644 grc/blocks/gr_kludge_copy.xml
 delete mode 100644 grc/blocks/gr_mpsk_sync_cc.xml
 delete mode 100644 grc/blocks/gr_nop.xml
 delete mode 100644 grc/blocks/gr_null_sink.xml
 delete mode 100644 grc/blocks/gr_null_source.xml
 delete mode 100644 grc/blocks/gr_skiphead.xml
 delete mode 100644 grc/blocks/gr_vector_insert_x.xml
 delete mode 100644 grc/blocks/gr_vector_sink_x.xml
 delete mode 100644 grc/blocks/gr_vector_source_x.xml

(limited to 'gr-blocks/python/qa_file_source_sink.py')

diff --git a/docs/doxygen/other/main_page.dox b/docs/doxygen/other/main_page.dox
index f9e335061c..deb6f8ebf8 100644
--- a/docs/doxygen/other/main_page.dox
+++ b/docs/doxygen/other/main_page.dox
@@ -80,7 +80,7 @@ them.
             
             self.src = analog.noise_source_c(gr.GR_GAUSSIAN, amp)
             self.flt = filter.fir_filter_ccf(1, taps)
-            self.snk = gr.null_sink(gr.sizeof_gr_complex)
+            self.snk = blocks.null_sink(gr.sizeof_gr_complex)
     
             self.connect(self.src, self.flt, self.snk)
     
@@ -226,7 +226,7 @@ class mytb(gr.top_block):
         self.src1 = analog.noise_source_c(analog.GR_GAUSSIAN, 1)
         self.add  = blocks.add_cc()
         self.sub  = blocks.sub_cc()
-        self.head = gr.head(gr.sizeof_gr_complex, 1000000)
+        self.head = blocks.head(gr.sizeof_gr_complex, 1000000)
         self.snk  = blocks.file_sink(gr.sizeof_gr_complex, "output.32fc")
 
         self.connect(self.src0, (self.add,0))
@@ -281,7 +281,7 @@ class mytb(gr.top_block):
         self.src1 = analog.noise_source_c(analog.GR_GAUSSIAN, 1)
         self.add  = blocks.add_cc()
         self.sub  = blocks.sub_cc()
-        self.head = gr.head(gr.sizeof_gr_complex, 1000000)
+        self.head = blocks.head(gr.sizeof_gr_complex, 1000000)
         self.snk  = blocks.file_sink(gr.sizeof_gr_complex, "output.32fc")
 
         self.connect(self.src0, (self.add,0))
diff --git a/docs/sphinx/gnuradio_sphinx.py b/docs/sphinx/gnuradio_sphinx.py
index e8ca867f8c..9955bf7317 100644
--- a/docs/sphinx/gnuradio_sphinx.py
+++ b/docs/sphinx/gnuradio_sphinx.py
@@ -113,8 +113,8 @@ class OldBlockDocumenter(FunctionDocumenter):
     """
     Specialized Documenter subclass for gnuradio blocks.
 
-    It merges together the documentation for the generator function (e.g. gr.head)
-    with the wrapped sptr (e.g. gr.gr_head_sptr) to keep the documentation
+    It merges together the documentation for the generator function (e.g. blocks.head)
+    with the wrapped sptr (e.g. gr::blocks::head::sptr) to keep the documentation
     tidier.
     """
     objtype = 'oldblock'
diff --git a/docs/sphinx/source/gr/index.rst b/docs/sphinx/source/gr/index.rst
index bd43888ec7..8da9504030 100644
--- a/docs/sphinx/source/gr/index.rst
+++ b/docs/sphinx/source/gr/index.rst
@@ -22,12 +22,6 @@ Signal Sources
    :nosignatures:
 
    gnuradio.gr.lfsr_32k_source_s
-   gnuradio.gr.null_source
-   gnuradio.gr.vector_source_b
-   gnuradio.gr.vector_source_c
-   gnuradio.gr.vector_source_f
-   gnuradio.gr.vector_source_i
-   gnuradio.gr.vector_source_s
 
 Signal Sinks
 ^^^^^^^^^^^^
@@ -37,12 +31,6 @@ Signal Sinks
 
    gnuradio.gr.check_counting_s
    gnuradio.gr.check_lfsr_32k_s
-   gnuradio.gr.null_sink
-   gnuradio.gr.vector_sink_b
-   gnuradio.gr.vector_sink_c
-   gnuradio.gr.vector_sink_f
-   gnuradio.gr.vector_sink_i
-   gnuradio.gr.vector_sink_s
    gnuradio.gr.histo_sink_f
    gnuradio.gr.oscope_sink_f
 
@@ -64,20 +52,7 @@ Miscellaneous Blocks
 .. autosummary::
    :nosignatures:
 
-   gnuradio.gr.copy
-   gnuradio.gr.kludge_copy
-   gnuradio.gr.nop
    gnuradio.gr.pa_2x2_phase_combiner
-   gnuradio.gr.channel_model
-
-Slicing and Dicing Streams
-^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-.. autosummary::
-   :nosignatures:
-
-   gnuradio.gr.head
-   gnuradio.gr.skiphead
 
 Miscellaneous
 -------------
diff --git a/docs/sphinx/source/gr/misc_blk.rst b/docs/sphinx/source/gr/misc_blk.rst
index a4dcc58a2d..9028adc660 100644
--- a/docs/sphinx/source/gr/misc_blk.rst
+++ b/docs/sphinx/source/gr/misc_blk.rst
@@ -1,8 +1,4 @@
 gnuradio.gr: Miscellaneous Blocks
 =================================
 
-.. autooldblock:: gnuradio.gr.copy
-.. autooldblock:: gnuradio.gr.kludge_copy
-.. autooldblock:: gnuradio.gr.nop
 .. autooldblock:: gnuradio.gr.pa_2x2_phase_combiner
-.. autooldblock:: gnuradio.gr.channel_model
diff --git a/docs/sphinx/source/gr/sink_blk.rst b/docs/sphinx/source/gr/sink_blk.rst
index 1e82765456..b5ca85aff8 100644
--- a/docs/sphinx/source/gr/sink_blk.rst
+++ b/docs/sphinx/source/gr/sink_blk.rst
@@ -3,11 +3,5 @@ gnuradio.gr: Signal Sinks
 
 .. autooldblock:: gnuradio.gr.check_counting_s
 .. autooldblock:: gnuradio.gr.check_lfsr_32k_s
-.. autooldblock:: gnuradio.gr.null_sink
-.. autooldblock:: gnuradio.gr.vector_sink_b
-.. autooldblock:: gnuradio.gr.vector_sink_c
-.. autooldblock:: gnuradio.gr.vector_sink_f
-.. autooldblock:: gnuradio.gr.vector_sink_i
-.. autooldblock:: gnuradio.gr.vector_sink_s
 .. autooldblock:: gnuradio.gr.histo_sink_f
 .. autooldblock:: gnuradio.gr.oscope_sink_f
diff --git a/docs/sphinx/source/gr/slicedice_blk.rst b/docs/sphinx/source/gr/slicedice_blk.rst
deleted file mode 100644
index 9ade1667d5..0000000000
--- a/docs/sphinx/source/gr/slicedice_blk.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-gnuradio.gr: Slicing and Dicing Streams
-=======================================
-
-.. autooldblock:: gnuradio.gr.head
-.. autooldblock:: gnuradio.gr.skiphead
diff --git a/docs/sphinx/source/gr/source_blk.rst b/docs/sphinx/source/gr/source_blk.rst
index 1ef77349f6..18e7e679a9 100644
--- a/docs/sphinx/source/gr/source_blk.rst
+++ b/docs/sphinx/source/gr/source_blk.rst
@@ -2,10 +2,4 @@ gnuradio.gr: Signal Sources
 ===========================
 
 .. autooldblock:: gnuradio.gr.lfsr_32k_source_s
-.. autooldblock:: gnuradio.gr.null_source
-.. autooldblock:: gnuradio.gr.vector_source_b
-.. autooldblock:: gnuradio.gr.vector_source_c
-.. autooldblock:: gnuradio.gr.vector_source_f
-.. autooldblock:: gnuradio.gr.vector_source_i
-.. autooldblock:: gnuradio.gr.vector_source_s
 
diff --git a/gnuradio-core/CMakeLists.txt b/gnuradio-core/CMakeLists.txt
index 60fd11dd31..9e910aa6bb 100644
--- a/gnuradio-core/CMakeLists.txt
+++ b/gnuradio-core/CMakeLists.txt
@@ -49,8 +49,6 @@ GR_SET_GLOBAL(GNURADIO_CORE_INCLUDE_DIRS
     ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/runtime
     ${CMAKE_CURRENT_BINARY_DIR}/src/lib/general
     ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/general
-    ${CMAKE_CURRENT_BINARY_DIR}/src/lib/gengen
-    ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/gengen
     ${CMAKE_CURRENT_BINARY_DIR}/src/lib/filter
     ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/filter
     ${CMAKE_CURRENT_SOURCE_DIR}/src/lib/missing
diff --git a/gnuradio-core/src/examples/ctrlport/pfb_sync_test-qt.grc b/gnuradio-core/src/examples/ctrlport/pfb_sync_test-qt.grc
index 31914412bc..a24adfd9e7 100644
--- a/gnuradio-core/src/examples/ctrlport/pfb_sync_test-qt.grc
+++ b/gnuradio-core/src/examples/ctrlport/pfb_sync_test-qt.grc
@@ -94,10 +94,10 @@
     </param>
   </block>
   <block>
-    <key>gr_vector_source_x</key>
+    <key>blocks_vector_source_x</key>
     <param>
       <key>id</key>
-      <value>gr_vector_source_x_0</value>
+      <value>blocks_vector_source_x_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -659,10 +659,10 @@
     </param>
   </block>
   <block>
-    <key>gr_null_sink</key>
+    <key>blocks_null_sink</key>
     <param>
       <key>id</key>
-      <value>gr_null_sink_0</value>
+      <value>blocks_null_sink_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -795,7 +795,7 @@
   </connection>
   <connection>
     <source_block_id>digital_costas_loop_cc_0</source_block_id>
-    <sink_block_id>gr_null_sink_0</sink_block_id>
+    <sink_block_id>blocks_null_sink_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
@@ -824,7 +824,7 @@
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>gr_vector_source_x_0</source_block_id>
+    <source_block_id>blocks_vector_source_x_0</source_block_id>
     <sink_block_id>blocks_packed_to_unpacked_xx_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
diff --git a/gnuradio-core/src/examples/ctrlport/pfb_sync_test.grc b/gnuradio-core/src/examples/ctrlport/pfb_sync_test.grc
index 5b0bfeb793..da63b4f5b3 100644
--- a/gnuradio-core/src/examples/ctrlport/pfb_sync_test.grc
+++ b/gnuradio-core/src/examples/ctrlport/pfb_sync_test.grc
@@ -226,10 +226,10 @@
     </param>
   </block>
   <block>
-    <key>gr_null_sink</key>
+    <key>blocks_null_sink</key>
     <param>
       <key>id</key>
-      <value>gr_null_sink_0</value>
+      <value>blocks_null_sink_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -637,7 +637,7 @@
   </connection>
   <connection>
     <source_block_id>digital_costas_loop_cc_0</source_block_id>
-    <sink_block_id>gr_null_sink_0</sink_block_id>
+    <sink_block_id>blocks_null_sink_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/gnuradio-core/src/examples/mp-sched/affinity_set.py b/gnuradio-core/src/examples/mp-sched/affinity_set.py
index 8b032acd83..eee88cd34e 100755
--- a/gnuradio-core/src/examples/mp-sched/affinity_set.py
+++ b/gnuradio-core/src/examples/mp-sched/affinity_set.py
@@ -7,6 +7,7 @@
 from gnuradio import eng_notation
 from gnuradio import gr
 from gnuradio import blocks
+from gnuradio import filter
 from gnuradio.eng_option import eng_option
 from gnuradio.filter import firdes
 from optparse import OptionParser
@@ -27,21 +28,21 @@ class affinity_set(gr.top_block):
 	##################################################
         vec_len = 1
 	self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*vec_len, samp_rate)
-	self.gr_null_source_0 = gr.null_source(gr.sizeof_gr_complex*vec_len)
-	self.gr_null_sink_0 = gr.null_sink(gr.sizeof_gr_complex*vec_len)
-	self.gr_filt_0 = gr.fir_filter_ccc(1, 40000*[0.2+0.3j,])
-	self.gr_filt_1 = gr.fir_filter_ccc(1, 40000*[0.2+0.3j,])
+	self.blocks_null_source_0 = blocks.null_source(gr.sizeof_gr_complex*vec_len)
+	self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_gr_complex*vec_len)
+	self.filter_filt_0 = filter.fir_filter_ccc(1, 40000*[0.2+0.3j,])
+	self.filter_filt_1 = filter.fir_filter_ccc(1, 40000*[0.2+0.3j,])
 
-	self.gr_filt_0.set_processor_affinity([0,])
-	self.gr_filt_1.set_processor_affinity([0,1])
+	self.filter_filt_0.set_processor_affinity([0,])
+	self.filter_filt_1.set_processor_affinity([0,1])
 		
 	##################################################
 	# Connections
 	##################################################
-	self.connect((self.gr_null_source_0, 0), (self.blocks_throttle_0, 0))
+	self.connect((self.blocks_null_source_0, 0), (self.blocks_throttle_0, 0))
 	self.connect((self.blocks_throttle_0, 0), (self.gr_filt_0, 0))
-	self.connect((self.gr_filt_0, 0), (self.gr_filt_1, 0))
-	self.connect((self.gr_filt_1, 0), (self.gr_null_sink_0, 0))
+	self.connect((self.filter_filt_0, 0), (self.gr_filt_1, 0))
+	self.connect((self.filter_filt_1, 0), (self.blocks_null_sink_0, 0))
 
 
 	# QT sink close method reimplementation
diff --git a/gnuradio-core/src/examples/mp-sched/synthetic.py b/gnuradio-core/src/examples/mp-sched/synthetic.py
index 5ce1b5eb89..4b509af228 100755
--- a/gnuradio-core/src/examples/mp-sched/synthetic.py
+++ b/gnuradio-core/src/examples/mp-sched/synthetic.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2008 Free Software Foundation, Inc.
+# Copyright 2008,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -20,6 +20,7 @@
 #
 
 from gnuradio import gr, gru, eng_notation, blks2
+from gnuradio import blocks
 from gnuradio.eng_option import eng_option
 from optparse import OptionParser
 import os
@@ -29,7 +30,7 @@ class pipeline(gr.hier_block2):
     def __init__(self, nstages, ntaps=256):
         """
         Create a pipeline of nstages of gr.fir_filter_fff's connected in serial
-        terminating in a gr.null_sink.
+        terminating in a blocks.null_sink.
         """
         gr.hier_block2.__init__(self, "pipeline",
                                 gr.io_signature(1, 1, gr.sizeof_float),
@@ -41,7 +42,7 @@ class pipeline(gr.hier_block2):
             self.connect(upstream, op)
             upstream = op
 
-        self.connect(upstream, gr.null_sink(gr.sizeof_float))
+        self.connect(upstream, blocks.null_sink(gr.sizeof_float))
 
 
 class top(gr.top_block):
@@ -75,8 +76,8 @@ class top(gr.top_block):
         # Something vaguely like floating point ops
         self.flop = 2 * ntaps * options.npipelines * options.nstages * options.nsamples
 
-        src = gr.null_source(gr.sizeof_float)
-        head = gr.head(gr.sizeof_float, int(options.nsamples))
+        src = blocks.null_source(gr.sizeof_float)
+        head = blocks.head(gr.sizeof_float, int(options.nsamples))
         self.connect(src, head)
 
         for n in range(options.npipelines):
diff --git a/gnuradio-core/src/examples/network/vector_source.py b/gnuradio-core/src/examples/network/vector_source.py
index b960a6d96a..568425fd50 100755
--- a/gnuradio-core/src/examples/network/vector_source.py
+++ b/gnuradio-core/src/examples/network/vector_source.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2006,2010 Free Software Foundation, Inc.
+# Copyright 2006,2010,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -29,7 +29,7 @@ class vector_source(gr.top_block):
     def __init__(self, host, port, pkt_size, eof):
         gr.top_block.__init__(self, "vector_source")
         data = [i*0.01 for i in range(1000)]
-        vec = gr.vector_source_f(data, True)
+        vec = blocks.vector_source_f(data, True)
         udp = blocks.udp_sink(gr.sizeof_float, host, port, pkt_size, eof=eof)
         self.connect(vec, udp)
 
diff --git a/gnuradio-core/src/examples/volk_benchmark/volk_test_funcs.py b/gnuradio-core/src/examples/volk_benchmark/volk_test_funcs.py
index 0ce25fcc6a..0f2c84100a 100644
--- a/gnuradio-core/src/examples/volk_benchmark/volk_test_funcs.py
+++ b/gnuradio-core/src/examples/volk_benchmark/volk_test_funcs.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 
 from gnuradio import gr
+from gnuradio import blocks
 import math, sys, os, time
 
 try:
@@ -119,13 +120,13 @@ class helper(gr.top_block):
         self.op = op
         self.srcs = []
         self.snks = []
-        self.head = gr.head(isizeof, N)
+        self.head = blocks.head(isizeof, N)
 
         for n in xrange(nsrcs):
-            self.srcs.append(gr.null_source(isizeof))
+            self.srcs.append(blocks.null_source(isizeof))
 
         for n in xrange(nsnks):
-            self.snks.append(gr.null_sink(osizeof))
+            self.snks.append(blocks.null_sink(osizeof))
 
         self.connect(self.srcs[0], self.head, (self.op,0))
 
diff --git a/gnuradio-core/src/lib/CMakeLists.txt b/gnuradio-core/src/lib/CMakeLists.txt
index 72b9f9bdeb..cb3dd18273 100644
--- a/gnuradio-core/src/lib/CMakeLists.txt
+++ b/gnuradio-core/src/lib/CMakeLists.txt
@@ -29,7 +29,6 @@ GR_INCLUDE_SUBDIRECTORY(missing)
 GR_INCLUDE_SUBDIRECTORY(runtime)
 GR_INCLUDE_SUBDIRECTORY(filter)
 GR_INCLUDE_SUBDIRECTORY(general)
-GR_INCLUDE_SUBDIRECTORY(gengen)
 GR_INCLUDE_SUBDIRECTORY(io)
 
 list(APPEND gnuradio_core_sources bug_work_around_6.cc)
diff --git a/gnuradio-core/src/lib/filter/CMakeLists.txt b/gnuradio-core/src/lib/filter/CMakeLists.txt
index a185b06bd5..5c7250c1ea 100644
--- a/gnuradio-core/src/lib/filter/CMakeLists.txt
+++ b/gnuradio-core/src/lib/filter/CMakeLists.txt
@@ -32,7 +32,6 @@ list(APPEND gnuradio_core_sources
 # Install runtime headers
 ########################################################################
 install(FILES
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_rotator.h
     ${CMAKE_CURRENT_SOURCE_DIR}/gr_sincos.h
     DESTINATION ${GR_INCLUDE_DIR}/gnuradio
     COMPONENT "core_devel"
diff --git a/gnuradio-core/src/lib/filter/gr_rotator.h b/gnuradio-core/src/lib/filter/gr_rotator.h
deleted file mode 100644
index 77946dd397..0000000000
--- a/gnuradio-core/src/lib/filter/gr_rotator.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2003,2008 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _GR_ROTATOR_H_
-#define _GR_ROTATOR_H_
-
-#include <gr_core_api.h>
-#include <gr_complex.h>
-
-class /*GR_CORE_API*/ gr_rotator {
-  gr_complex	d_phase;
-  gr_complex	d_phase_incr;
-  unsigned int	d_counter;
-
- public:
-  gr_rotator () : d_phase (1), d_phase_incr (1), d_counter(0) { }
-
-  void set_phase (gr_complex phase)     { d_phase = phase / abs(phase); }
-  void set_phase_incr (gr_complex incr) { d_phase_incr = incr / abs(incr); }
-
-  gr_complex rotate (gr_complex in){
-    d_counter++;
-
-    gr_complex z = in * d_phase;    // rotate in by phase
-    d_phase *= d_phase_incr;	    // incr our phase (complex mult == add phases)
-
-    if ((d_counter % 512) == 0)
-      d_phase /= abs(d_phase);	    // Normalize to ensure multiplication is rotation
-
-    return z;
-  }
-
-};
-
-#endif /* _GR_ROTATOR_H_ */
diff --git a/gnuradio-core/src/lib/filter/qa_rotator.cc b/gnuradio-core/src/lib/filter/qa_rotator.cc
deleted file mode 100644
index b722f32c43..0000000000
--- a/gnuradio-core/src/lib/filter/qa_rotator.cc
+++ /dev/null
@@ -1,81 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <gruel/attributes.h>
-#include <cppunit/TestAssert.h>
-#include <qa_rotator.h>
-#include <analog/rotator.h>
-#include <stdio.h>
-#include <cmath>
-#include <gr_expj.h>
-
-namespace gr {
-  namespace analog {
-
-    // error vector magnitude
-    __GR_ATTR_UNUSED static float
-    error_vector_mag(gr_complex a, gr_complex b)
-    {
-      return abs(a-b);
-    }
-
-    void
-    qa_rotator::t1()
-    {
-      static const unsigned int N = 100000;
-
-      rotator r;
-
-      double phase_incr = 2*M_PI / 1003;
-      double phase = 0;
-
-      // Old code: We increment then return the rotated value, thus we
-      // need to start one tick back
-      // r.set_phase(gr_complex(1,0) * conj(gr_expj(phase_incr)));
-
-      r.set_phase(gr_complex(1,0));
-      r.set_phase_incr(gr_expj(phase_incr));
-
-      for(unsigned i = 0; i < N; i++) {
-	gr_complex expected = gr_expj(phase);
-	gr_complex actual = r.rotate(gr_complex(1, 0));
-
-#if 0
-	float evm = error_vector_mag(expected, actual);
-	printf("[%6d] expected: (%8.6f, %8.6f)  actual: (%8.6f, %8.6f)  evm: %8.6f\n",
-	       i, expected.real(), expected.imag(), actual.real(), actual.imag(), evm);
-#endif
-
-	CPPUNIT_ASSERT_COMPLEXES_EQUAL(expected, actual, 0.0001);
-
-	phase += phase_incr;
-	if(phase >= 2*M_PI)
-	  phase -= 2*M_PI;
-      }
-    }
-
-  } /* namespace analog */
-} /* namespace gr */
diff --git a/gnuradio-core/src/lib/filter/qa_rotator.h b/gnuradio-core/src/lib/filter/qa_rotator.h
deleted file mode 100644
index a22e41ec26..0000000000
--- a/gnuradio-core/src/lib/filter/qa_rotator.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2008,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef _QA_ANALOG_ROTATOR_H_
-#define _QA_ANALOG_ROTATOR_H_
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-
-namespace gr {
-  namespace analog {
-
-    class qa_rotator : public CppUnit::TestCase
-    {
-      CPPUNIT_TEST_SUITE(qa_rotator);
-      CPPUNIT_TEST(t1);
-      CPPUNIT_TEST_SUITE_END();
-
-    private:
-      void t1();
-    };
-
-  } /* namespace analog */
-} /* namespace gr */
-
-#endif /* _QA_ANALOG_ROTATOR_H_ */
diff --git a/gnuradio-core/src/lib/general/CMakeLists.txt b/gnuradio-core/src/lib/general/CMakeLists.txt
index e3dc18520b..d1cf08103e 100644
--- a/gnuradio-core/src/lib/general/CMakeLists.txt
+++ b/gnuradio-core/src/lib/general/CMakeLists.txt
@@ -73,6 +73,7 @@ install(FILES
     ${CMAKE_CURRENT_SOURCE_DIR}/gr_core_api.h
     ${CMAKE_CURRENT_SOURCE_DIR}/gr_circular_file.h
     ${CMAKE_CURRENT_SOURCE_DIR}/gr_constants.h
+    ${CMAKE_CURRENT_SOURCE_DIR}/gr_endianness.h
     ${CMAKE_CURRENT_SOURCE_DIR}/gr_expj.h
     ${CMAKE_CURRENT_SOURCE_DIR}/gr_math.h
     ${CMAKE_CURRENT_SOURCE_DIR}/gr_misc.h
@@ -109,25 +110,13 @@ set(gr_core_general_triple_threats
     gr_block_gateway
     gr_check_counting_s
     gr_check_lfsr_32k_s
-    gr_copy
-    gr_endian_swap
     gr_fake_channel_coder_pp
     gr_feval
-    gr_head
     gr_iqcomp_cc
-    gr_kludge_copy
     gr_lfsr_32k_source_s
-    gr_nop
-    gr_null_sink
-    gr_null_source
     gr_pa_2x2_phase_combiner
     gr_prefs
-    gr_skiphead
     gr_test
-    gr_vector_map
-    gr_annotator_alltoall
-    gr_annotator_1to1
-    gr_annotator_raw
 )
 
 if(ENABLE_GR_CTRLPORT)
diff --git a/gnuradio-core/src/lib/general/general.i b/gnuradio-core/src/lib/general/general.i
index bcf4392bb4..b8b803de98 100644
--- a/gnuradio-core/src/lib/general/general.i
+++ b/gnuradio-core/src/lib/general/general.i
@@ -22,60 +22,35 @@
 
 %{
 
-#include <gr_nop.h>
-#include <gr_null_sink.h>
-#include <gr_null_source.h>
-#include <gr_head.h>
-#include <gr_skiphead.h>
 #include <gr_check_counting_s.h>
 #include <gr_lfsr_32k_source_s.h>
 #include <gr_check_lfsr_32k_s.h>
 #include <gr_align_on_samplenumbers_ss.h>
-//#include <gr_endianness.h>
-#include <gr_endian_swap.h>
 #include <gr_fake_channel_coder_pp.h>
 #include <gr_pa_2x2_phase_combiner.h>
-#include <gr_kludge_copy.h>
 #include <gr_prefs.h>
 #include <gr_constants.h>
 #include <gr_test_types.h>
 #include <gr_test.h>
 #include <gr_feval.h>
-#include <gr_copy.h>
 #include <complex_vec_test.h>
-#include <gr_annotator_alltoall.h>
-#include <gr_annotator_1to1.h>
-#include <gr_annotator_raw.h>
-#include <gr_vector_map.h>
+#include <gr_endianness.h>
 %}
 
-%include "gr_nop.i"
-%include "gr_null_sink.i"
-%include "gr_null_source.i"
-%include "gr_head.i"
-%include "gr_skiphead.i"
 %include "gr_check_counting_s.i"
 %include "gr_lfsr_32k_source_s.i"
 %include "gr_check_lfsr_32k_s.i"
 %include "gr_align_on_samplenumbers_ss.i"
-//%include "gr_endianness.i"
-%include "gr_endian_swap.i"
 %include "gr_fake_channel_coder_pp.i"
 %include "gr_pa_2x2_phase_combiner.i"
-%include "gr_kludge_copy.i"
 %include "gr_prefs.i"
 %include "gr_constants.i"
 %include "gr_test_types.h"
 %include "gr_test.i"
 %include "gr_feval.i"
-%include "gr_copy.i"
 %include "complex_vec_test.i"
-%include "gr_annotator_alltoall.i"
-%include "gr_annotator_1to1.i"
-%include "gr_annotator_raw.i"
-%include "gr_vector_map.i"
 %include "gr_block_gateway.i"
-
+%include "gr_endianness.h"
 
 #ifdef GR_CTRLPORT
 
diff --git a/gnuradio-core/src/lib/general/general_generated.i b/gnuradio-core/src/lib/general/general_generated.i
deleted file mode 100644
index c3f67e0d47..0000000000
--- a/gnuradio-core/src/lib/general/general_generated.i
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// This file is machine generated.  All edits will be overwritten
-//
-%{
-#include <gr_vector_sink_b.h>
-#include <gr_vector_sink_c.h>
-#include <gr_vector_sink_f.h>
-#include <gr_vector_sink_i.h>
-#include <gr_vector_sink_s.h>
-#include <gr_vector_source_b.h>
-#include <gr_vector_source_c.h>
-#include <gr_vector_source_f.h>
-#include <gr_vector_source_i.h>
-#include <gr_vector_source_s.h>
-%}
-
-%include <gr_vector_sink_b.i>
-%include <gr_vector_sink_c.i>
-%include <gr_vector_sink_f.i>
-%include <gr_vector_sink_i.i>
-%include <gr_vector_sink_s.i>
-%include <gr_vector_source_b.i>
-%include <gr_vector_source_c.i>
-%include <gr_vector_source_f.i>
-%include <gr_vector_source_i.i>
-%include <gr_vector_source_s.i>
diff --git a/gnuradio-core/src/lib/general/gr_annotator_1to1.cc b/gnuradio-core/src/lib/general/gr_annotator_1to1.cc
deleted file mode 100644
index 1178bdc34f..0000000000
--- a/gnuradio-core/src/lib/general/gr_annotator_1to1.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_annotator_1to1.h>
-#include <gr_io_signature.h>
-#include <string.h>
-#include <iostream>
-#include <iomanip>
-
-gr_annotator_1to1_sptr
-gr_make_annotator_1to1 (int when, size_t sizeof_stream_item)
-{
-  return gnuradio::get_initial_sptr (new gr_annotator_1to1
-				     (when, sizeof_stream_item));
-}
-
-gr_annotator_1to1::gr_annotator_1to1 (int when, size_t sizeof_stream_item)
-  : gr_sync_block ("annotator_1to1",
-		   gr_make_io_signature (1, -1, sizeof_stream_item),
-		   gr_make_io_signature (1, -1, sizeof_stream_item)),
-    d_itemsize(sizeof_stream_item), d_when((uint64_t)when)
-{
-  set_tag_propagation_policy(TPP_ONE_TO_ONE);
-
-  d_tag_counter = 0;
-  set_relative_rate(1.0);
-}
-
-gr_annotator_1to1::~gr_annotator_1to1 ()
-{
-}
-
-int
-gr_annotator_1to1::work (int noutput_items,
-			 gr_vector_const_void_star &input_items,
-			 gr_vector_void_star &output_items)
-{
-  const float *in = (const float*)input_items[0];
-  float *out = (float*)output_items[0];
-
-  std::stringstream str;
-  str << name() << unique_id();
-
-  uint64_t abs_N = 0;
-  int ninputs = input_items.size();
-  for(int i = 0; i < ninputs; i++) {
-    abs_N = nitems_read(i);
-
-    std::vector<gr_tag_t> all_tags;
-    get_tags_in_range(all_tags, i, abs_N, abs_N + noutput_items);
-
-    std::vector<gr_tag_t>::iterator itr;
-    for(itr = all_tags.begin(); itr != all_tags.end(); itr++) {
-      d_stored_tags.push_back(*itr);
-    }
-  }
-
-  // Storing the current noutput_items as the value to the "noutput_items" key
-  pmt::pmt_t srcid = pmt::string_to_symbol(str.str());
-  pmt::pmt_t key = pmt::string_to_symbol("seq");
-
-  // Work does nothing to the data stream; just copy all inputs to outputs
-  // Adds a new tag when the number of items read is a multiple of d_when
-  abs_N = nitems_read(0);
-  int noutputs = output_items.size();
-  for(int j = 0; j < noutput_items; j++) {
-    // the min() is a hack to make sure this doesn't segfault if there are a
-    // different number of ins and outs. This is specifically designed to test
-    // the 1-to-1 propagation policy.
-    for(int i = 0; i < std::min(noutputs, ninputs); i++) {
-      if(abs_N % d_when == 0) {
-	pmt::pmt_t value = pmt::from_uint64(d_tag_counter++);
-	add_item_tag(i, abs_N, key, value, srcid);
-      }
-
-      in  = (const float*)input_items[i];
-      out = (float*)output_items[i];
-      out[j] = in[j];
-    }
-    abs_N++;
-  }
-
-  return noutput_items;
-}
diff --git a/gnuradio-core/src/lib/general/gr_annotator_1to1.h b/gnuradio-core/src/lib/general/gr_annotator_1to1.h
deleted file mode 100644
index 57e5720141..0000000000
--- a/gnuradio-core/src/lib/general/gr_annotator_1to1.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_ANNOTATOR_1TO1_H
-#define	INCLUDED_GR_ANNOTATOR_1TO1_H
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-
-class gr_annotator_1to1;
-typedef boost::shared_ptr<gr_annotator_1to1> gr_annotator_1to1_sptr;
-
-// public constructor
-GR_CORE_API gr_annotator_1to1_sptr
-gr_make_annotator_1to1 (int when, size_t sizeof_stream_item);
-
-/*!
- * \brief 1-to-1 stream annotator testing block. FOR TESTING PURPOSES ONLY.
- *
- * This block creates tags to be sent downstream every 10,000 items it sees. The
- * tags contain the name and ID of the instantiated block, use "seq" as a key,
- * and have a counter that increments by 1 for every tag produced that is used
- * as the tag's value. The tags are propagated using the 1-to-1 policy.
- *
- * It also stores a copy of all tags it sees flow past it. These tags can be
- * recalled externally with the data() member.
- *
- * This block is only meant for testing and showing how to use the tags.
- */
-class GR_CORE_API gr_annotator_1to1 : public gr_sync_block
-{
- public:
-  ~gr_annotator_1to1 ();
-  int work (int noutput_items,
-	    gr_vector_const_void_star &input_items,
-	    gr_vector_void_star &output_items);
-
-  std::vector<gr_tag_t> data() const
-  {
-    return d_stored_tags;
-  }
-
-protected:
-  gr_annotator_1to1 (int when, size_t sizeof_stream_item);
-
- private:
-  size_t d_itemsize;
-  uint64_t d_when;
-  uint64_t d_tag_counter;
-  std::vector<gr_tag_t> d_stored_tags;
-
-  friend GR_CORE_API gr_annotator_1to1_sptr
-  gr_make_annotator_1to1 (int when, size_t sizeof_stream_item);
-};
-
-#endif
diff --git a/gnuradio-core/src/lib/general/gr_annotator_1to1.i b/gnuradio-core/src/lib/general/gr_annotator_1to1.i
deleted file mode 100644
index 2637b8d277..0000000000
--- a/gnuradio-core/src/lib/general/gr_annotator_1to1.i
+++ /dev/null
@@ -1,25 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010-2011 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,annotator_1to1);
-
-%include <gr_annotator_1to1.h>
diff --git a/gnuradio-core/src/lib/general/gr_annotator_alltoall.cc b/gnuradio-core/src/lib/general/gr_annotator_alltoall.cc
deleted file mode 100644
index d8b7e2db7e..0000000000
--- a/gnuradio-core/src/lib/general/gr_annotator_alltoall.cc
+++ /dev/null
@@ -1,110 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_annotator_alltoall.h>
-#include <gr_io_signature.h>
-#include <string.h>
-#include <iostream>
-#include <iomanip>
-
-gr_annotator_alltoall_sptr
-gr_make_annotator_alltoall (int when, size_t sizeof_stream_item)
-{
-  return gnuradio::get_initial_sptr (new gr_annotator_alltoall
-				     (when, sizeof_stream_item));
-}
-
-gr_annotator_alltoall::gr_annotator_alltoall (int when,
-					      size_t sizeof_stream_item)
-  : gr_sync_block ("annotator_alltoall",
-		   gr_make_io_signature (1, -1, sizeof_stream_item),
-		   gr_make_io_signature (1, -1, sizeof_stream_item)),
-    d_itemsize(sizeof_stream_item), d_when((uint64_t)when)
-{
-  set_tag_propagation_policy(TPP_ALL_TO_ALL);
-
-  d_tag_counter = 0;
-}
-
-gr_annotator_alltoall::~gr_annotator_alltoall ()
-{
-}
-
-int
-gr_annotator_alltoall::work (int noutput_items,
-			     gr_vector_const_void_star &input_items,
-			     gr_vector_void_star &output_items)
-{
-  const float *in = (const float *) input_items[0];
-  float *out = (float *) output_items[0];
-
-  std::stringstream str;
-  str << name() << unique_id();
-
-  uint64_t abs_N = 0, end_N;
-  int ninputs = input_items.size();
-  for(int i = 0; i < ninputs; i++) {
-    abs_N = nitems_read(i);
-    end_N = abs_N + (uint64_t)(noutput_items);
-
-    std::vector<gr_tag_t> all_tags;
-    get_tags_in_range(all_tags, i, abs_N, end_N);
-
-    std::vector<gr_tag_t>::iterator itr;
-    for(itr = all_tags.begin(); itr != all_tags.end(); itr++) {
-      d_stored_tags.push_back(*itr);
-    }
-  }
-
-  // Source ID and key for any tag that might get applied from this block
-  pmt::pmt_t srcid = pmt::string_to_symbol(str.str());
-  pmt::pmt_t key = pmt::string_to_symbol("seq");
-
-  // Work does nothing to the data stream; just copy all inputs to outputs
-  // Adds a new tag when the number of items read is a multiple of d_when
-  abs_N = nitems_written(0);
-  int noutputs = output_items.size();
-
-  for(int j = 0; j < noutput_items; j++) {
-    for(int i = 0; i < noutputs; i++) {
-      if(abs_N % d_when == 0) {
-	pmt::pmt_t value = pmt::from_uint64(d_tag_counter++);
-	add_item_tag(i, abs_N, key, value, srcid);
-      }
-
-      // Sum all of the inputs together for each output. Just 'cause.
-      out = (float*)output_items[i];
-      out[j] = 0;
-      for(int ins = 0; ins < ninputs; ins++) {
-	in = (const float*)input_items[ins];
-	out[j] += in[j];
-      }
-    }
-    abs_N++;
-  }
-
-  return noutput_items;
-}
diff --git a/gnuradio-core/src/lib/general/gr_annotator_alltoall.h b/gnuradio-core/src/lib/general/gr_annotator_alltoall.h
deleted file mode 100644
index deb5874a49..0000000000
--- a/gnuradio-core/src/lib/general/gr_annotator_alltoall.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_ANNOTATOR_ALLTOALL_H
-#define	INCLUDED_GR_ANNOTATOR_ALLTOALL_H
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-
-class gr_annotator_alltoall;
-typedef boost::shared_ptr<gr_annotator_alltoall> gr_annotator_alltoall_sptr;
-
-// public constructor
-GR_CORE_API gr_annotator_alltoall_sptr
-gr_make_annotator_alltoall (int when, size_t sizeof_stream_item);
-
-/*!
- * \brief All-to-all stream annotator testing block. FOR TESTING PURPOSES ONLY.
- *
- * This block creates tags to be sent downstream every 10,000 items it sees. The
- * tags contain the name and ID of the instantiated block, use "seq" as a key,
- * and have a counter that increments by 1 for every tag produced that is used
- * as the tag's value. The tags are propagated using the all-to-all policy.
- *
- * It also stores a copy of all tags it sees flow past it. These tags can be
- * recalled externally with the data() member.
- *
- * This block is only meant for testing and showing how to use the tags.
- */
-class GR_CORE_API gr_annotator_alltoall : public gr_sync_block
-{
- public:
-  ~gr_annotator_alltoall ();
-
-  int work (int noutput_items,
-	    gr_vector_const_void_star &input_items,
-	    gr_vector_void_star &output_items);
-
-  std::vector<gr_tag_t> data() const
-  {
-    return d_stored_tags;
-  }
-
-protected:
-  gr_annotator_alltoall (int when, size_t sizeof_stream_item);
-
- private:
-  size_t d_itemsize;
-  uint64_t d_when;
-  uint64_t d_tag_counter;
-  std::vector<gr_tag_t> d_stored_tags;
-
-  friend GR_CORE_API gr_annotator_alltoall_sptr
-  gr_make_annotator_alltoall (int when, size_t sizeof_stream_item);
-};
-
-#endif
diff --git a/gnuradio-core/src/lib/general/gr_annotator_alltoall.i b/gnuradio-core/src/lib/general/gr_annotator_alltoall.i
deleted file mode 100644
index 35190a3d1b..0000000000
--- a/gnuradio-core/src/lib/general/gr_annotator_alltoall.i
+++ /dev/null
@@ -1,25 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010-2011 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,annotator_alltoall);
-
-%include <gr_annotator_alltoall.h>
diff --git a/gnuradio-core/src/lib/general/gr_annotator_raw.cc b/gnuradio-core/src/lib/general/gr_annotator_raw.cc
deleted file mode 100644
index c3aecdd938..0000000000
--- a/gnuradio-core/src/lib/general/gr_annotator_raw.cc
+++ /dev/null
@@ -1,106 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_annotator_raw.h>
-#include <gr_io_signature.h>
-#include <string.h>
-#include <iostream>
-#include <iomanip>
-#include <stdexcept>
-
-using namespace pmt;
-
-gr_annotator_raw_sptr
-gr_make_annotator_raw(size_t sizeof_stream_item)
-{
-  return gnuradio::get_initial_sptr(new gr_annotator_raw
-				    (sizeof_stream_item));
-}
-
-gr_annotator_raw::gr_annotator_raw(size_t sizeof_stream_item)
-  : gr_sync_block("annotator_raw",
-		  gr_make_io_signature(1, 1, sizeof_stream_item),
-		  gr_make_io_signature(1, 1, sizeof_stream_item)),
-    d_itemsize(sizeof_stream_item)
-{
-  set_tag_propagation_policy(TPP_ONE_TO_ONE);
-  set_relative_rate(1.0);
-}
-
-void gr_annotator_raw::add_tag(uint64_t offset, pmt_t key, pmt_t val)
-{
-  gruel::scoped_lock l(d_mutex);
-
-  gr_tag_t tag;
-  tag.srcid = pmt::intern(name());
-  tag.key = key;
-  tag.value = val;
-  tag.offset = offset;
-
-  // add our new tag
-  d_queued_tags.push_back(tag);
-  // make sure our tags are in offset order
-  std::sort(d_queued_tags.begin(), d_queued_tags.end(),
-	    gr_tag_t::offset_compare);
-  // make sure we are not adding an item in the past!
-  if(tag.offset > nitems_read(0)) {
-    throw std::runtime_error("gr_annotator_raw::add_tag: item added too far in the past\n.");
-  }
-}
-
-gr_annotator_raw::~gr_annotator_raw()
-{
-}
-
-int
-gr_annotator_raw::work(int noutput_items,
-		       gr_vector_const_void_star &input_items,
-		       gr_vector_void_star &output_items)
-{
-  gruel::scoped_lock l(d_mutex);
-
-  const char *in = (const char*)input_items[0];
-  char *out = (char*)output_items[0];
-
-  uint64_t start_N = nitems_read(0);
-  uint64_t end_N = start_N + (uint64_t)(noutput_items);
-   
-  // locate queued tags that fall in this range and insert them when appropriate
-  std::vector<gr_tag_t>::iterator i = d_queued_tags.begin();
-  while( i != d_queued_tags.end() ) {
-    if( (*i).offset >= start_N && (*i).offset < end_N) {
-      add_item_tag(0, (*i).offset,(*i).key, (*i).value, (*i).srcid);
-      i = d_queued_tags.erase(i);
-    } 
-    else {
-      break;
-    }
-  }
-
-  // copy data across
-  memcpy(out, in, noutput_items*d_itemsize);
-  return noutput_items;
-}
diff --git a/gnuradio-core/src/lib/general/gr_annotator_raw.h b/gnuradio-core/src/lib/general/gr_annotator_raw.h
deleted file mode 100644
index 02d0619081..0000000000
--- a/gnuradio-core/src/lib/general/gr_annotator_raw.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_ANNOTATOR_RAW_H
-#define	INCLUDED_GR_ANNOTATOR_RAW_H
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-#include <gr_tags.h>
-#include <gruel/thread.h>
-
-class gr_annotator_raw;
-typedef boost::shared_ptr<gr_annotator_raw> gr_annotator_raw_sptr;
-
-// public constructor
-GR_CORE_API gr_annotator_raw_sptr 
-gr_make_annotator_raw(size_t sizeof_stream_item);
-
-/*!
- * \brief raw stream annotator testing block.
- *
- * This block creates arbitrary tags to be sent downstream
- * blocks to be sent are set manually via accessor methods and are sent only once.
- *
- * This block is intended for testing of tag related blocks
- */
-class GR_CORE_API gr_annotator_raw : public gr_sync_block
-{
- public:
-  ~gr_annotator_raw();
-  int work(int noutput_items,
-	   gr_vector_const_void_star &input_items,
-	   gr_vector_void_star &output_items);
-
-  // insert a tag to be added
-  void add_tag(uint64_t offset, pmt::pmt_t key, pmt::pmt_t val);
-
-protected:
-  gr_annotator_raw(size_t sizeof_stream_item);
-
- private:
-  size_t d_itemsize;
-  std::vector<gr_tag_t> d_queued_tags;
-  gruel::mutex d_mutex;
-
-  friend GR_CORE_API gr_annotator_raw_sptr
-  gr_make_annotator_raw(size_t sizeof_stream_item);
-};
-
-#endif
diff --git a/gnuradio-core/src/lib/general/gr_annotator_raw.i b/gnuradio-core/src/lib/general/gr_annotator_raw.i
deleted file mode 100644
index 4a58fe7c79..0000000000
--- a/gnuradio-core/src/lib/general/gr_annotator_raw.i
+++ /dev/null
@@ -1,26 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010-2011 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,annotator_raw);
-
-%include <gr_tags.i>
-%include <gr_annotator_raw.h>
diff --git a/gnuradio-core/src/lib/general/gr_copy.cc b/gnuradio-core/src/lib/general/gr_copy.cc
deleted file mode 100644
index 0a6f721f94..0000000000
--- a/gnuradio-core/src/lib/general/gr_copy.cc
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_copy.h>
-#include <gr_io_signature.h>
-#include <string.h>
-
-gr_copy_sptr
-gr_make_copy(size_t itemsize)
-{
-  return gnuradio::get_initial_sptr(new gr_copy(itemsize));
-}
-
-gr_copy::gr_copy(size_t itemsize)
-  : gr_block ("copy",
-	      gr_make_io_signature (1, 1, itemsize),
-	      gr_make_io_signature (1, 1, itemsize)),
-    d_itemsize(itemsize),
-    d_enabled(true)
-{
-}
-
-bool
-gr_copy::check_topology(int ninputs, int noutputs)
-{
-  return ninputs == noutputs;
-}
-
-int
-gr_copy::general_work(int noutput_items,
-		      gr_vector_int &ninput_items,
-		      gr_vector_const_void_star &input_items,
-		      gr_vector_void_star &output_items)
-{
-  const uint8_t *in = (const uint8_t *) input_items[0];
-  uint8_t *out = (uint8_t *) output_items[0];
-
-  int n = std::min<int>(ninput_items[0], noutput_items);
-  int j = 0;
-
-  if (d_enabled) {
-    memcpy(out, in, n*d_itemsize);
-    j = n;
-  }
-
-  consume_each(n);
-  return j;
-}
diff --git a/gnuradio-core/src/lib/general/gr_copy.h b/gnuradio-core/src/lib/general/gr_copy.h
deleted file mode 100644
index b0769fa2b1..0000000000
--- a/gnuradio-core/src/lib/general/gr_copy.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_COPY_H
-#define INCLUDED_GR_COPY_H
-
-#include <gr_core_api.h>
-#include <gr_block.h>
-
-class gr_copy;
-typedef boost::shared_ptr<gr_copy> gr_copy_sptr;
-
-GR_CORE_API gr_copy_sptr gr_make_copy(size_t itemsize);
-
-/*!
- * \brief output[i] = input[i]
- * \ingroup misc_blk
- *
- * When enabled (default), this block copies its input to its output.
- * When disabled, this block drops its input on the floor.
- *
- */
-class GR_CORE_API gr_copy : public gr_block
-{
-  size_t		d_itemsize;
-  bool			d_enabled;
-
-  friend GR_CORE_API gr_copy_sptr gr_make_copy(size_t itemsize);
-  gr_copy(size_t itemsize);
-
- public:
-
-  bool check_topology(int ninputs, int noutputs);
-
-  void set_enabled(bool enable) { d_enabled = enable; }
-  bool enabled() const { return d_enabled;}
-
-  int general_work(int noutput_items,
-		   gr_vector_int &ninput_items,
-		   gr_vector_const_void_star &input_items,
-		   gr_vector_void_star &output_items);
-};
-
-#endif
diff --git a/gnuradio-core/src/lib/general/gr_copy.i b/gnuradio-core/src/lib/general/gr_copy.i
deleted file mode 100644
index 12ddce6aaf..0000000000
--- a/gnuradio-core/src/lib/general/gr_copy.i
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,copy)
-
-gr_copy_sptr gr_make_copy(size_t itemsize);
-
-class gr_copy : public gr_block
-{
- private:
-  gr_copy(size_t itemsize);
-
-public:
-
-  void set_enabled(bool enabled);
-  bool enabled();
-};
diff --git a/gnuradio-core/src/lib/general/gr_endian_swap.cc b/gnuradio-core/src/lib/general/gr_endian_swap.cc
deleted file mode 100644
index 8bea0ca30d..0000000000
--- a/gnuradio-core/src/lib/general/gr_endian_swap.cc
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2010,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_endian_swap.h>
-#include <gr_io_signature.h>
-#include <volk/volk.h>
-
-gr_endian_swap_sptr
-gr_make_endian_swap (size_t item_size_bytes)
-{
-  return gnuradio::get_initial_sptr(new gr_endian_swap (item_size_bytes));
-}
-
-gr_endian_swap::gr_endian_swap (size_t item_size_bytes)
-  : gr_sync_block ("gr_endian_swap",
-		   gr_make_io_signature (1, 1, item_size_bytes),
-		   gr_make_io_signature (1, 1, item_size_bytes))
-{
-  const int alignment_multiple = volk_get_alignment();
-  set_alignment(std::max(1,alignment_multiple));
-}
-
-int
-gr_endian_swap::work (int noutput_items,
-			 gr_vector_const_void_star &input_items,
-			 gr_vector_void_star &output_items)
-{
-  const char *in = (const char *) input_items[0];
-  char *out = (char *) output_items[0];
-
-  int nbytes( output_signature()->sizeof_stream_item(0) );
-  if(is_unaligned()) {
-      switch(nbytes){
-        case 1:
-            memcpy(out,in,noutput_items);
-            break;
-        case 2:
-            memcpy(out,in,2*noutput_items);
-            volk_16u_byteswap_u((uint16_t*)out,noutput_items);
-            break;
-        case 4:
-            memcpy(out,in,4*noutput_items);
-            volk_32u_byteswap_u((uint32_t*)out,noutput_items);
-            break;
-        case 8:
-            memcpy(out,in,8*noutput_items);
-            volk_64u_byteswap_u((uint64_t*)out,noutput_items);
-            break;
-        default:
-            throw std::runtime_error("itemsize is not valid for gr_endian_swap!");
-        } 
-    } else {
-      switch(nbytes){
-        case 1:
-            memcpy(out,in,noutput_items);
-            break;
-        case 2:
-            memcpy(out,in,2*noutput_items);
-            volk_16u_byteswap_a((uint16_t*)out,noutput_items);
-            break;
-        case 4:
-            memcpy(out,in,4*noutput_items);
-            volk_32u_byteswap_a((uint32_t*)out,noutput_items);
-            break;
-        case 8:
-            memcpy(out,in,8*noutput_items);
-            volk_64u_byteswap_a((uint64_t*)out,noutput_items);
-            break;
-        default:
-            throw std::runtime_error("itemsize is not valid for gr_endian_swap!");
-        }
-    }
-
-  return noutput_items;
-}
-
-
-
diff --git a/gnuradio-core/src/lib/general/gr_endian_swap.h b/gnuradio-core/src/lib/general/gr_endian_swap.h
deleted file mode 100644
index 0baa3f3389..0000000000
--- a/gnuradio-core/src/lib/general/gr_endian_swap.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_ENDIAN_SWAP_H
-#define INCLUDED_GR_ENDIAN_SWAP_H
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-
-class gr_endian_swap;
-typedef boost::shared_ptr<gr_endian_swap> gr_endian_swap_sptr;
-
-GR_CORE_API gr_endian_swap_sptr
-gr_make_endian_swap (size_t item_size_bytes=1);
-
-/*!
- * \brief Convert stream of items into thier byte swapped version
- *
- * \param item_size_bytes number of bytes per item, 1=no-op,2=uint16_t,4=uint32_t,8=uint64_t
- */
-
-class GR_CORE_API gr_endian_swap : public gr_sync_block
-{
- private:
-  friend GR_CORE_API gr_endian_swap_sptr
-    gr_make_endian_swap (size_t item_size_bytes);
-  gr_endian_swap (size_t item_size_bytes);
-
-  size_t item_size_bytes;
-
- public:
-  virtual int work (int noutput_items,
-		    gr_vector_const_void_star &input_items,
-		    gr_vector_void_star &output_items);
-};
-
-
-#endif /* INCLUDED_GR_ENDIAN_SWAP_H */
diff --git a/gnuradio-core/src/lib/general/gr_endian_swap.i b/gnuradio-core/src/lib/general/gr_endian_swap.i
deleted file mode 100644
index 6058b9de77..0000000000
--- a/gnuradio-core/src/lib/general/gr_endian_swap.i
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,endian_swap)
-
-gr_endian_swap_sptr
-gr_make_endian_swap (size_t bytes_per_item=1);
-
-class gr_endian_swap : public gr_sync_block
-{
-public:
-};
diff --git a/gnuradio-core/src/lib/general/gr_endianness.h b/gnuradio-core/src/lib/general/gr_endianness.h
new file mode 100644
index 0000000000..c4ecb1383e
--- /dev/null
+++ b/gnuradio-core/src/lib/general/gr_endianness.h
@@ -0,0 +1,27 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef INCLUDED_GR_ENDIANNESS_H
+#define INCLUDED_GR_ENDIANNESS_H
+
+typedef enum {GR_MSB_FIRST, GR_LSB_FIRST} gr_endianness_t;
+
+#endif /* INCLUDED_GR_ENDIANNESS_H */
diff --git a/gnuradio-core/src/lib/general/gr_head.cc b/gnuradio-core/src/lib/general/gr_head.cc
deleted file mode 100644
index 1726888113..0000000000
--- a/gnuradio-core/src/lib/general/gr_head.cc
+++ /dev/null
@@ -1,62 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <gr_head.h>
-#include <gr_io_signature.h>
-#include <string.h>
-#include <iostream>
-
-gr_head::gr_head (size_t sizeof_stream_item, unsigned long long nitems)
-  : gr_sync_block ("head",
-		   gr_make_io_signature (1, 1, sizeof_stream_item),
-		   gr_make_io_signature (1, 1, sizeof_stream_item)),
-    d_nitems (nitems), d_ncopied_items (0)
-{
-}
-
-gr_head_sptr
-gr_make_head (size_t sizeof_stream_item, unsigned long long nitems)
-{
-  return gnuradio::get_initial_sptr(new gr_head (sizeof_stream_item, nitems));
-}
-
-int
-gr_head::work (int noutput_items,
-		    gr_vector_const_void_star &input_items,
-		    gr_vector_void_star &output_items)
-{
-  if (d_ncopied_items >= d_nitems)
-    return -1;				// Done!
-
-  unsigned n = std::min (d_nitems - d_ncopied_items, (unsigned long long) noutput_items);
-
-  if (n == 0)
-    return 0;
-
-  memcpy (output_items[0], input_items[0], n * input_signature()->sizeof_stream_item (0));
-  d_ncopied_items += n;
-
-  return n;
-}
diff --git a/gnuradio-core/src/lib/general/gr_head.h b/gnuradio-core/src/lib/general/gr_head.h
deleted file mode 100644
index 48415892dd..0000000000
--- a/gnuradio-core/src/lib/general/gr_head.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2009,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_HEAD_H
-#define INCLUDED_GR_HEAD_H
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-#include <stddef.h>			// size_t
-
-class gr_head;
-typedef boost::shared_ptr<gr_head> gr_head_sptr;
-
-/*!
- * \brief copies the first N items to the output then signals done
- * \ingroup slicedice_blk
- *
- * Useful for building test cases
- */
-
-class GR_CORE_API gr_head : public gr_sync_block
-{
-  friend GR_CORE_API gr_head_sptr gr_make_head (size_t sizeof_stream_item, unsigned long long nitems);
-  gr_head (size_t sizeof_stream_item, unsigned long long nitems);
-
-  unsigned long long	d_nitems;
-  unsigned long long	d_ncopied_items;
-
- public:
-  int work (int noutput_items,
-		 gr_vector_const_void_star &input_items,
-		 gr_vector_void_star &output_items);
-
-  void reset() { d_ncopied_items = 0; }
-  void set_length(int nitems) { d_nitems = nitems; }
-};
-
-GR_CORE_API gr_head_sptr
-gr_make_head (size_t sizeof_stream_item, unsigned long long nitems);
-
-
-#endif /* INCLUDED_GR_HEAD_H */
diff --git a/gnuradio-core/src/lib/general/gr_head.i b/gnuradio-core/src/lib/general/gr_head.i
deleted file mode 100644
index 11f3331d47..0000000000
--- a/gnuradio-core/src/lib/general/gr_head.i
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2009,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,head);
-
-gr_head_sptr gr_make_head(size_t sizeof_stream_item, unsigned long long nitems);
-
-class gr_head : public gr_block {
-  gr_head();
-public:
-  void reset();
-  void set_length(int nitems);
-};
-
diff --git a/gnuradio-core/src/lib/general/gr_kludge_copy.cc b/gnuradio-core/src/lib/general/gr_kludge_copy.cc
deleted file mode 100644
index f6a8d8af68..0000000000
--- a/gnuradio-core/src/lib/general/gr_kludge_copy.cc
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_kludge_copy.h>
-#include <gr_io_signature.h>
-#include <string.h>
-
-gr_kludge_copy_sptr
-gr_make_kludge_copy(size_t itemsize)
-{
-  return gnuradio::get_initial_sptr(new gr_kludge_copy(itemsize));
-}
-
-gr_kludge_copy::gr_kludge_copy(size_t itemsize)
-  : gr_sync_block ("kludge_copy",
-		   gr_make_io_signature (1, -1, itemsize),
-		   gr_make_io_signature (1, -1, itemsize)),
-    d_itemsize(itemsize)
-{
-}
-
-bool
-gr_kludge_copy::check_topology(int ninputs, int noutputs)
-{
-  return ninputs == noutputs;
-}
-
-int
-gr_kludge_copy::work(int noutput_items,
-		     gr_vector_const_void_star &input_items,
-		     gr_vector_void_star &output_items)
-{
-  const float **in = (const float **) &input_items[0];
-  float **out = (float **) &output_items[0];
-
-  int ninputs = input_items.size();
-  for (int i = 0; i < ninputs; i++){
-    memcpy(out[i], in[i], noutput_items * d_itemsize);
-  }
-  return noutput_items;
-}
diff --git a/gnuradio-core/src/lib/general/gr_kludge_copy.h b/gnuradio-core/src/lib/general/gr_kludge_copy.h
deleted file mode 100644
index 0bcf144699..0000000000
--- a/gnuradio-core/src/lib/general/gr_kludge_copy.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_KLUDGE_COPY_H
-#define INCLUDED_GR_KLUDGE_COPY_H
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-
-class gr_kludge_copy;
-typedef boost::shared_ptr<gr_kludge_copy> gr_kludge_copy_sptr;
-
-GR_CORE_API gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize);
-
-/*!
- * \brief output[i] = input[i]
- * \ingroup misc_blk
- *
- * This is a short term kludge to work around a problem with the hierarchical block impl.
- */
-class GR_CORE_API gr_kludge_copy : public gr_sync_block
-{
-  size_t		d_itemsize;
-
-  friend GR_CORE_API gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize);
-  gr_kludge_copy(size_t itemsize);
-
- public:
-
-  bool check_topology(int ninputs, int noutputs);
-
-  int work(int noutput_items,
-	   gr_vector_const_void_star &input_items,
-	   gr_vector_void_star &output_items);
-};
-
-#endif
diff --git a/gnuradio-core/src/lib/general/gr_kludge_copy.i b/gnuradio-core/src/lib/general/gr_kludge_copy.i
deleted file mode 100644
index 7ff2b57365..0000000000
--- a/gnuradio-core/src/lib/general/gr_kludge_copy.i
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,kludge_copy)
-
-gr_kludge_copy_sptr gr_make_kludge_copy(size_t itemsize);
-
-class gr_kludge_copy : public gr_sync_block
-{
- private:
-  gr_kludge_copy(size_t itemsize);
-};
diff --git a/gnuradio-core/src/lib/general/gr_nop.cc b/gnuradio-core/src/lib/general/gr_nop.cc
deleted file mode 100644
index 164f3ba8dd..0000000000
--- a/gnuradio-core/src/lib/general/gr_nop.cc
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <gr_nop.h>
-#include <gr_io_signature.h>
-#include <boost/bind.hpp>
-
-#ifdef GR_CTRLPORT
-#include <rpcregisterhelpers.h>
-#endif
-
-gr_nop_sptr
-gr_make_nop (size_t sizeof_stream_item)
-{
-  return gnuradio::get_initial_sptr (new gr_nop (sizeof_stream_item));
-}
-
-gr_nop::gr_nop (size_t sizeof_stream_item)
-  : gr_block ("nop",
-	      gr_make_io_signature (0, -1, sizeof_stream_item),
-	      gr_make_io_signature (0, -1, sizeof_stream_item)),
-    d_nmsgs_recvd(0), d_ctrlport_test(0)
-{
-  // Arrange to have count_received_msgs called when messages are received.
-  message_port_register_in(pmt::mp("port"));
-  set_msg_handler(pmt::mp("port"), boost::bind(&gr_nop::count_received_msgs, this, _1));
-}
-
-// Trivial message handler that just counts them.
-// (N.B., This feature is used in qa_set_msg_handler)
-void
-gr_nop::count_received_msgs(pmt::pmt_t msg)
-{
-  d_nmsgs_recvd++;
-}
-
-int
-gr_nop::general_work (int noutput_items,
-		      gr_vector_int &ninput_items,
-		      gr_vector_const_void_star &input_items,
-		      gr_vector_void_star &output_items)
-{
-  // eat any input that's available
-  for (unsigned i = 0; i < ninput_items.size (); i++)
-    consume (i, ninput_items[i]);
-
-  return noutput_items;
-}
-
-void
-gr_nop::setup_rpc()
-{
-#ifdef GR_CTRLPORT
-  d_rpc_vars.push_back(
-    rpcbasic_sptr(new rpcbasic_register_get<gr_nop, int>(
-      alias(), "test",
-      &gr_nop::ctrlport_test,
-      pmt::mp(-256), pmt::mp(255), pmt::mp(0),
-      "", "Simple testing variable",
-      RPC_PRIVLVL_MIN, DISPNULL)));
-
-  d_rpc_vars.push_back(
-    rpcbasic_sptr(new rpcbasic_register_set<gr_nop, int>(
-      alias(), "test",
-      &gr_nop::set_ctrlport_test,
-      pmt::mp(-256), pmt::mp(255), pmt::mp(0),
-      "", "Simple testing variable",
-      RPC_PRIVLVL_MIN, DISPNULL)));
-#endif /* GR_CTRLPORT */
-}
diff --git a/gnuradio-core/src/lib/general/gr_nop.h b/gnuradio-core/src/lib/general/gr_nop.h
deleted file mode 100644
index 5f1cb13a02..0000000000
--- a/gnuradio-core/src/lib/general/gr_nop.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_NOP_H
-#define INCLUDED_GR_NOP_H
-
-#include <gr_core_api.h>
-#include <gr_block.h>
-#include <stddef.h>			// size_t
-
-class gr_nop;
-typedef boost::shared_ptr<gr_nop> gr_nop_sptr;
-
-GR_CORE_API gr_nop_sptr
-gr_make_nop (size_t sizeof_stream_item);
-
-/*!
- * \brief Does nothing.  Used for testing only.
- * \ingroup misc_blk
- */
-class GR_CORE_API gr_nop : public gr_block
-{
-  friend GR_CORE_API gr_nop_sptr gr_make_nop (size_t sizeof_stream_item);
-  gr_nop (size_t sizeof_stream_item);
-
-  std::vector<boost::any> d_rpc_vars;
-  void setup_rpc();
-
-protected:
-  int	d_nmsgs_recvd;
-  int   d_ctrlport_test;
-
-  // Method that just counts any received messages.
-  void count_received_msgs(pmt::pmt_t msg);
-
- public:
-  virtual int general_work (int noutput_items,
-			    gr_vector_int &ninput_items,
-			    gr_vector_const_void_star &input_items,
-			    gr_vector_void_star &output_items);
-
-  int nmsgs_received() const { return d_nmsgs_recvd; }
-
-  int  ctrlport_test() { return d_ctrlport_test; }
-  void set_ctrlport_test(int x) { d_ctrlport_test = x; }
-};
-
-#endif /* INCLUDED_GR_NOP_H */
diff --git a/gnuradio-core/src/lib/general/gr_nop.i b/gnuradio-core/src/lib/general/gr_nop.i
deleted file mode 100644
index 73ffa93630..0000000000
--- a/gnuradio-core/src/lib/general/gr_nop.i
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,nop)
-
-gr_nop_sptr gr_make_nop (size_t sizeof_stream_item);
-
-class gr_nop : public gr_block {
-public:
-  int  ctrlport_test();
-  void set_ctrlport_test(int x);
-private:
-  gr_nop (size_t sizeof_stream_item);
-};
-
diff --git a/gnuradio-core/src/lib/general/gr_null_sink.cc b/gnuradio-core/src/lib/general/gr_null_sink.cc
deleted file mode 100644
index 1836655024..0000000000
--- a/gnuradio-core/src/lib/general/gr_null_sink.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_null_sink.h>
-#include <gr_io_signature.h>
-
-gr_null_sink::gr_null_sink (size_t sizeof_stream_item)
-  : gr_sync_block ("null_sink",
-		   gr_make_io_signature (1, 1, sizeof_stream_item),
-		   gr_make_io_signature (0, 0, 0))
-{
-}
-
-gr_null_sink_sptr
-gr_make_null_sink (size_t sizeof_stream_item)
-{
-  return gnuradio::get_initial_sptr (new gr_null_sink (sizeof_stream_item));
-}
-
-int
-gr_null_sink::work (int noutput_items,
-		    gr_vector_const_void_star &input_items,
-		    gr_vector_void_star &output_items)
-{
-  return noutput_items;
-}
diff --git a/gnuradio-core/src/lib/general/gr_null_sink.h b/gnuradio-core/src/lib/general/gr_null_sink.h
deleted file mode 100644
index 7374293295..0000000000
--- a/gnuradio-core/src/lib/general/gr_null_sink.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_NULL_SINK_H
-#define INCLUDED_GR_NULL_SINK_H
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-#include <stddef.h>			// size_t
-
-class gr_null_sink;
-typedef boost::shared_ptr<gr_null_sink> gr_null_sink_sptr;
-
-GR_CORE_API gr_null_sink_sptr
-gr_make_null_sink (size_t sizeof_stream_item);
-
-/*!
- * \brief Bit bucket
- * \ingroup sink_blk
- */
-class GR_CORE_API gr_null_sink : public gr_sync_block
-{
-  friend GR_CORE_API gr_null_sink_sptr gr_make_null_sink (size_t sizeof_stream_item);
-  gr_null_sink (size_t sizeof_stream_item);
-
- public:
-
-  virtual int work (int noutput_items,
-		    gr_vector_const_void_star &input_items,
-		    gr_vector_void_star &output_items);
-
-};
-
-#endif /* INCLUDED_GR_NULL_SINK_H */
diff --git a/gnuradio-core/src/lib/general/gr_null_sink.i b/gnuradio-core/src/lib/general/gr_null_sink.i
deleted file mode 100644
index 80411f9b74..0000000000
--- a/gnuradio-core/src/lib/general/gr_null_sink.i
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,null_sink)
-
-gr_null_sink_sptr gr_make_null_sink (size_t sizeof_stream_item);
-
-class gr_null_sink : public gr_sync_block {
-private:
-  gr_null_sink (size_t sizeof_stream_item);
-};
-
diff --git a/gnuradio-core/src/lib/general/gr_null_source.cc b/gnuradio-core/src/lib/general/gr_null_source.cc
deleted file mode 100644
index 1ad5c351d6..0000000000
--- a/gnuradio-core/src/lib/general/gr_null_source.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_null_source.h>
-#include <gr_io_signature.h>
-#include <string.h>
-
-gr_null_source::gr_null_source (size_t sizeof_stream_item)
-  : gr_sync_block ("null_source",
-		   gr_make_io_signature (0, 0, 0),
-		   gr_make_io_signature (1, 1, sizeof_stream_item))
-{
-}
-
-gr_null_source_sptr
-gr_make_null_source (size_t sizeof_stream_item)
-{
-  return gnuradio::get_initial_sptr (new gr_null_source (sizeof_stream_item));
-}
-
-int
-gr_null_source::work (int noutput_items,
-		      gr_vector_const_void_star &input_items,
-		      gr_vector_void_star &output_items)
-{
-  void *optr = (void *) output_items[0];
-  memset (optr, 0, noutput_items * output_signature()->sizeof_stream_item (0));
-  return noutput_items;
-}
diff --git a/gnuradio-core/src/lib/general/gr_null_source.h b/gnuradio-core/src/lib/general/gr_null_source.h
deleted file mode 100644
index 1c64e8bd98..0000000000
--- a/gnuradio-core/src/lib/general/gr_null_source.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_NULL_SOURCE_H
-#define INCLUDED_GR_NULL_SOURCE_H
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-
-class gr_null_source;
-typedef boost::shared_ptr<gr_null_source> gr_null_source_sptr;
-
-GR_CORE_API gr_null_source_sptr
-gr_make_null_source (size_t sizeof_stream_item);
-
-/*!
- * \brief A source of zeros.
- * \ingroup source_blk
- */
-class GR_CORE_API gr_null_source : public gr_sync_block
-{
-  friend GR_CORE_API gr_null_source_sptr gr_make_null_source (size_t sizeof_stream_item);
-
-  gr_null_source (size_t sizeof_stream_item);
-
- public:
-  virtual int work (int noutput_items,
-		    gr_vector_const_void_star &input_items,
-		    gr_vector_void_star &output_items);
-
-};
-
-#endif /* INCLUDED_GR_NULL_SOURCE_H */
diff --git a/gnuradio-core/src/lib/general/gr_null_source.i b/gnuradio-core/src/lib/general/gr_null_source.i
deleted file mode 100644
index 120a59999c..0000000000
--- a/gnuradio-core/src/lib/general/gr_null_source.i
+++ /dev/null
@@ -1,31 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,null_source)
-
-gr_null_source_sptr gr_make_null_source (size_t sizeof_stream_item);
-
-class gr_null_source : public gr_sync_block {
-private:
-  gr_null_source (size_t sizeof_stream_item);
-};
-
diff --git a/gnuradio-core/src/lib/general/gr_skiphead.cc b/gnuradio-core/src/lib/general/gr_skiphead.cc
deleted file mode 100644
index c93478597b..0000000000
--- a/gnuradio-core/src/lib/general/gr_skiphead.cc
+++ /dev/null
@@ -1,108 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2005,2007,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <gr_skiphead.h>
-#include <gr_io_signature.h>
-#include <string.h>
-
-gr_skiphead::gr_skiphead (size_t itemsize, uint64_t nitems_to_skip)
-  : gr_block ("skiphead",
-	      gr_make_io_signature(1, 1, itemsize),
-	      gr_make_io_signature(1, 1, itemsize)),
-    d_nitems_to_skip(nitems_to_skip), d_nitems(0)
-{
-}
-
-gr_skiphead_sptr
-gr_make_skiphead (size_t itemsize, uint64_t nitems_to_skip)
-{
-  return gnuradio::get_initial_sptr(new gr_skiphead (itemsize, nitems_to_skip));
-}
-
-void
-gr_skiphead::set_nitems_to_skip(uint64_t nitems_to_skip)
-{
-  d_nitems_to_skip = nitems_to_skip;
-  reset();
-}
-
-uint64_t
-gr_skiphead::nitems_to_skip() const
-{
-  return d_nitems_to_skip;
-}
-
-uint64_t
-gr_skiphead::nitems_skiped() const
-{
-  return d_nitems;
-}
-
-void
-gr_skiphead::reset()
-{
-  d_nitems = 0;
-}
-
-int
-gr_skiphead::general_work(int noutput_items,
-			  gr_vector_int &ninput_items_,
-			  gr_vector_const_void_star &input_items,
-			  gr_vector_void_star &output_items)
-{
-  const char *in = (const char *) input_items[0];
-  char *out = (char *) output_items[0];
-
-  int ninput_items = std::min(ninput_items_[0], noutput_items);
-  int ii = 0;				// input index
-
-  while (ii < ninput_items){
-
-    uint64_t ni_total = ii + d_nitems;  	// total items processed so far
-    if (ni_total < d_nitems_to_skip){		// need to skip some more
-
-      int n_to_skip = (int) std::min(d_nitems_to_skip - ni_total,
-				     (uint64_t)(ninput_items - ii));
-      ii += n_to_skip;
-    }
-
-    else {		// nothing left to skip.  copy away
-
-      int n_to_copy = ninput_items - ii;
-      if (n_to_copy > 0){
-	size_t itemsize = output_signature()->sizeof_stream_item(0);
-	memcpy(out, in + (ii*itemsize), n_to_copy*itemsize);
-      }
-
-      d_nitems += ninput_items;
-      consume_each(ninput_items);
-      return n_to_copy;
-    }
-  }
-
-  d_nitems += ninput_items;
-  consume_each(ninput_items);
-  return 0;
-}
diff --git a/gnuradio-core/src/lib/general/gr_skiphead.h b/gnuradio-core/src/lib/general/gr_skiphead.h
deleted file mode 100644
index 710530ff4c..0000000000
--- a/gnuradio-core/src/lib/general/gr_skiphead.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2005 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_SKIPHEAD_H
-#define INCLUDED_GR_SKIPHEAD_H
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-#include <stddef.h>      // size_t
-
-class gr_skiphead;
-typedef boost::shared_ptr<gr_skiphead> gr_skiphead_sptr;
-
-GR_CORE_API gr_skiphead_sptr
-gr_make_skiphead (size_t itemsize, uint64_t nitems_to_skip);
-
-
-/*!
- * \brief skips the first N items, from then on copies items to the output
- * \ingroup slicedice_blk
- *
- * Useful for building test cases and sources which have metadata or junk at the start
- */
-
-class GR_CORE_API gr_skiphead : public gr_block
-{
-  friend GR_CORE_API gr_skiphead_sptr gr_make_skiphead (size_t itemsize, uint64_t nitems_to_skip);
-  gr_skiphead (size_t itemsize, uint64_t nitems_to_skip);
-
-  uint64_t  		d_nitems_to_skip;
-  uint64_t		d_nitems;		// total items seen
-
- public:
-
-  /*!
-   * \brief Sets number of items to skip; resets current skip count to 0.
-   */
-  void set_nitems_to_skip(uint64_t nitems_to_skip);
-
-  /*!
-   * \brief Gets the number of items to skip.
-   */
-  uint64_t nitems_to_skip() const;
-
-  /*!
-   * \brief Gets the number of items already skipped.
-   */
-  uint64_t nitems_skiped() const;
-
-  /*!
-   * \brief Resets number of items skipped to 0.
-   */
-  void reset();
-
-  int general_work(int noutput_items,
-		   gr_vector_int &ninput_items,
-		   gr_vector_const_void_star &input_items,
-		   gr_vector_void_star &output_items);
-};
-
-#endif /* INCLUDED_GR_SKIPHEAD_H */
diff --git a/gnuradio-core/src/lib/general/gr_skiphead.i b/gnuradio-core/src/lib/general/gr_skiphead.i
deleted file mode 100644
index 8ab23a77a6..0000000000
--- a/gnuradio-core/src/lib/general/gr_skiphead.i
+++ /dev/null
@@ -1,35 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2005,2007,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr,skiphead);
-
-gr_skiphead_sptr gr_make_skiphead(size_t itemsize,
-				  uint64_t nitems_to_skip);
-
-class gr_skiphead : public gr_block
-{
-public:
-  void set_nitems_to_skip(uint64_t nitems_to_skip);
-  uint64_t nitems_to_skip() const;
-  uint64_t nitems_skiped() const;
-  void reset();
-};
diff --git a/gnuradio-core/src/lib/general/gr_vector_map.cc b/gnuradio-core/src/lib/general/gr_vector_map.cc
deleted file mode 100644
index 2a13efb06d..0000000000
--- a/gnuradio-core/src/lib/general/gr_vector_map.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gr_vector_map.h>
-#include <gr_io_signature.h>
-#include <string.h>
-
-std::vector<int>
-get_in_sizeofs(size_t item_size, std::vector<size_t> in_vlens)
-{
-  std::vector<int> in_sizeofs;
-  for(unsigned int i = 0; i < in_vlens.size(); i++) {
-    in_sizeofs.push_back(in_vlens[i]*item_size);
-  }
-  return in_sizeofs;
-}
-
-std::vector<int>
-get_out_sizeofs(size_t item_size,
-		std::vector< std::vector< std::vector<size_t> > > mapping)
-{
-  std::vector<int> out_sizeofs;
-  for(unsigned int i = 0; i < mapping.size(); i++) {
-    out_sizeofs.push_back(mapping[i].size()*item_size);
-  }
-  return out_sizeofs;
-} 
-
-gr_vector_map_sptr
-gr_make_vector_map (size_t item_size, std::vector<size_t> in_vlens,
-		    std::vector< std::vector< std::vector<size_t> > > mapping)
-{
-  return gnuradio::get_initial_sptr(new gr_vector_map(item_size,
-						      in_vlens,
-						      mapping));
-}
-
-gr_vector_map::gr_vector_map(size_t item_size, std::vector<size_t> in_vlens,
-			     std::vector< std::vector< std::vector<size_t> > > mapping)
-  : gr_sync_block("vector_map",
-		  gr_make_io_signaturev(in_vlens.size(), in_vlens.size(),
-					get_in_sizeofs(item_size, in_vlens)),
-		  gr_make_io_signaturev(mapping.size(), mapping.size(),
-					get_out_sizeofs(item_size, mapping))),
-    d_item_size(item_size), d_in_vlens(in_vlens)
-{
-  set_mapping(mapping);
-}
-
-void
-gr_vector_map::set_mapping(std::vector< std::vector< std::vector<size_t> > > mapping) {
-  // Make sure the contents of the mapping vectors are possible.
-  for(unsigned int i=0; i<mapping.size(); i++) {
-    for(unsigned int j=0; j<mapping[i].size(); j++) {
-      if(mapping[i][j].size() != 2) {
-	throw std::runtime_error("Mapping must be of the form (out_mapping_stream1, out_mapping_stream2, ...), where out_mapping_stream1 is of the form (mapping_element1, mapping_element2, ...), where mapping_element1 is of the form (input_stream, input_element).  This error is raised because a mapping_element vector does not contain exactly 2 items.");
-      }
-      unsigned int s = mapping[i][j][0];
-      unsigned int index = mapping[i][j][1];
-      if(s >= d_in_vlens.size()) {
-	throw std::runtime_error("Stream numbers in mapping must be less than the number of input streams.");
-      }
-      if((index < 0) || (index >= d_in_vlens[s])) {
-	throw std::runtime_error ("Indices in mapping must be greater than 0 and less than the input vector lengths.");
-      }
-    }
-  }
-  gruel::scoped_lock guard(d_mutex);
-  d_mapping = mapping;
-}
-
-int
-gr_vector_map::work(int noutput_items,
-		    gr_vector_const_void_star &input_items,
-		    gr_vector_void_star &output_items)
-{
-  const char **inv = (const char **) &input_items[0];
-  char **outv = (char **) &output_items[0];
-
-  for(unsigned int n = 0; n < (unsigned int)(noutput_items); n++) {
-    for(unsigned int i = 0; i < d_mapping.size(); i++) {
-      unsigned int out_vlen = d_mapping[i].size();
-      for(unsigned int j = 0; j < out_vlen; j++) {
-	unsigned int s = d_mapping[i][j][0];
-	unsigned int k = d_mapping[i][j][1];
-	memcpy(outv[i] + out_vlen*d_item_size*n +
-	       d_item_size*j, inv[s] + d_in_vlens[s]*d_item_size*n +
-	       k*d_item_size, d_item_size);
-      }
-    }
-  }
-
-  return noutput_items;
-}
diff --git a/gnuradio-core/src/lib/general/gr_vector_map.h b/gnuradio-core/src/lib/general/gr_vector_map.h
deleted file mode 100644
index f5492b1e3a..0000000000
--- a/gnuradio-core/src/lib/general/gr_vector_map.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_GR_VECTOR_MAP_H
-#define INCLUDED_GR_VECTOR_MAP_H
-
-#include <vector>
-#include <gr_core_api.h>
-#include <gr_sync_interpolator.h>
-#include <gruel/thread.h>
-
-class gr_vector_map;
-typedef boost::shared_ptr<gr_vector_map> gr_vector_map_sptr;
-
-GR_CORE_API gr_vector_map_sptr
-gr_make_vector_map (size_t item_size, std::vector<size_t> in_vlens,
-		    std::vector< std::vector< std::vector<size_t> > > mapping);
-
-/*!
- * \brief Maps elements from a set of input vectors to a set of output vectors.
- *
- * If in[i] is the input vector in the i'th stream then the output
- * vector in the j'th stream is:
- *
- * out[j][k] = in[mapping[j][k][0]][mapping[j][k][1]]
- *
- * That is mapping is of the form (out_stream1_mapping,
- * out_stream2_mapping, ...)  and out_stream1_mapping is of the form
- * (element1_mapping, element2_mapping, ...)  and element1_mapping is
- * of the form (in_stream, in_element).
- *
- * \param item_size (integer) size of vector elements
- *
- * \param in_vlens (vector of integers) number of elements in each
- *                 input vector
- *
- * \param mapping (vector of vectors of vectors of integers) how to
- *                map elements from input to output vectors
- *
- * \ingroup slicedice_blk
- */
-class GR_CORE_API gr_vector_map : public gr_sync_block
-{
-  friend GR_CORE_API gr_vector_map_sptr
-    gr_make_vector_map(size_t item_size, std::vector<size_t> in_vlens,
-		       std::vector< std::vector< std::vector<size_t> > > mapping);
-  size_t d_item_size;
-  std::vector<size_t> d_in_vlens;
-  std::vector< std::vector< std::vector<size_t> > > d_mapping;
-  gruel::mutex d_mutex; // mutex to protect set/work access
-
- protected:
-  gr_vector_map(size_t item_size, std::vector<size_t> in_vlens,
-		std::vector< std::vector< std::vector<size_t> > > mapping);
-
- public:
-  int work(int noutput_items,
-	   gr_vector_const_void_star &input_items,
-	   gr_vector_void_star &output_items);
-
-  void set_mapping(std::vector< std::vector< std::vector<size_t> > > mapping);
-};
-
-#endif /* INCLUDED_GR_VECTOR_MAP_H */
diff --git a/gnuradio-core/src/lib/general/gr_vector_map.i b/gnuradio-core/src/lib/general/gr_vector_map.i
deleted file mode 100644
index e9fa3f27e5..0000000000
--- a/gnuradio-core/src/lib/general/gr_vector_map.i
+++ /dev/null
@@ -1,28 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-GR_SWIG_BLOCK_MAGIC(gr, vector_map);
-
-%template() std::vector<size_t>;
-%template() std::vector< std::vector< std::vector<size_t> > >;
-
-%include "gr_vector_map.h"
diff --git a/gnuradio-core/src/lib/gengen/CMakeLists.txt b/gnuradio-core/src/lib/gengen/CMakeLists.txt
deleted file mode 100644
index 45834ced5f..0000000000
--- a/gnuradio-core/src/lib/gengen/CMakeLists.txt
+++ /dev/null
@@ -1,143 +0,0 @@
-# Copyright 2010-2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-
-########################################################################
-# This file included, use CMake directory variables
-########################################################################
-include(GrPython)
-
-########################################################################
-# generate the python helper script which calls into the build utils
-########################################################################
-file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/generate_helper.py "
-#!${PYTHON_EXECUTABLE}
-
-import sys, os, re
-sys.path.append('${GR_CORE_PYTHONPATH}')
-os.environ['srcdir'] = '${CMAKE_CURRENT_SOURCE_DIR}'
-os.chdir('${CMAKE_CURRENT_BINARY_DIR}')
-
-if __name__ == '__main__':
-    import build_utils
-    root, inp = sys.argv[1:3]
-    for sig in sys.argv[3:]:
-        name = re.sub ('X+', sig, root)
-        d = build_utils.standard_dict(name, sig)
-        build_utils.expand_template(d, inp)
-
-")
-
-########################################################################
-# generation helper macro to generate various files from template
-########################################################################
-macro(expand_h_cc_i root)
-
-    foreach(ext h cc i)
-        #make a list of all the generated files
-        unset(expanded_files_${ext})
-        foreach(sig ${ARGN})
-            string(REGEX REPLACE "X+" ${sig} name ${root})
-            list(APPEND expanded_files_${ext} ${CMAKE_CURRENT_BINARY_DIR}/${name}.${ext})
-        endforeach(sig)
-
-        #create a command to generate the files
-        add_custom_command(
-            OUTPUT ${expanded_files_${ext}}
-            DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${root}.${ext}.t
-            COMMAND ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B}
-                ${CMAKE_CURRENT_BINARY_DIR}/generate_helper.py
-                ${root} ${root}.${ext}.t ${ARGN}
-        )
-    endforeach(ext)
-
-    #make source files depends on headers to force generation
-    set_source_files_properties(${expanded_files_cc}
-        PROPERTIES OBJECT_DEPENDS "${expanded_files_h}"
-    )
-
-    #install rules for the generated cc, h, and i files
-    list(APPEND generated_gengen_sources ${expanded_files_cc})
-    list(APPEND generated_gengen_includes ${expanded_files_h})
-    list(APPEND generated_gengen_swigs ${expanded_files_i})
-
-endmacro(expand_h_cc_i)
-
-########################################################################
-# Invoke macro to generate various sources
-########################################################################
-expand_h_cc_i(gr_vector_source_X   b s i f c)
-expand_h_cc_i(gr_vector_insert_X   b)
-expand_h_cc_i(gr_vector_sink_X     b s i f c)
-
-add_custom_target(gengen_generated DEPENDS
-    ${generated_gengen_includes}
-    ${generated_gengen_swigs}
-)
-
-########################################################################
-# Create the master gengen swig include files
-########################################################################
-set(generated_index ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i.in)
-file(WRITE ${generated_index} "
-//
-// This file is machine generated.  All edits will be overwritten
-//
-")
-
-file(APPEND ${generated_index} "%{\n")
-foreach(swig_file ${generated_gengen_swigs})
-    get_filename_component(name ${swig_file} NAME_WE)
-    file(APPEND ${generated_index} "#include<${name}.h>\n")
-endforeach(swig_file)
-file(APPEND ${generated_index} "%}\n")
-
-foreach(swig_file ${generated_gengen_swigs})
-    get_filename_component(name ${swig_file} NAME)
-    file(APPEND ${generated_index} "%include<${name}>\n")
-endforeach(swig_file)
-
-execute_process(
-    COMMAND ${CMAKE_COMMAND} -E copy_if_different
-    ${generated_index} ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i
-)
-
-########################################################################
-# Handle the generated sources + a few non-generated ones
-########################################################################
-list(APPEND gnuradio_core_sources
-    ${generated_gengen_sources}
-)
-
-install(FILES
-    ${generated_gengen_includes}
-    ${CMAKE_CURRENT_SOURCE_DIR}/gr_endianness.h
-    DESTINATION ${GR_INCLUDE_DIR}/gnuradio
-    COMPONENT "core_devel"
-)
-
-if(ENABLE_PYTHON)
-    install(FILES
-       ${generated_gengen_swigs}
-        ${CMAKE_CURRENT_SOURCE_DIR}/gr_endianness.i
-        ${CMAKE_CURRENT_SOURCE_DIR}/gengen.i
-        ${CMAKE_CURRENT_BINARY_DIR}/gengen_generated.i
-        DESTINATION ${GR_INCLUDE_DIR}/gnuradio/swig
-        COMPONENT "core_swig"
-    )
-endif(ENABLE_PYTHON)
diff --git a/gnuradio-core/src/lib/gengen/generate_all.py b/gnuradio-core/src/lib/gengen/generate_all.py
deleted file mode 100755
index 6b0f20f058..0000000000
--- a/gnuradio-core/src/lib/gengen/generate_all.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2004 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from build_utils import output_glue
-
-import generate_common
-
-def generate_all ():
-    generate_common.generate ()
-    output_glue ('gengen')
-
-
-if __name__ == '__main__':
-    generate_all ()
diff --git a/gnuradio-core/src/lib/gengen/generate_common.py b/gnuradio-core/src/lib/gengen/generate_common.py
deleted file mode 100755
index 68913f9a75..0000000000
--- a/gnuradio-core/src/lib/gengen/generate_common.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2004,2006,2007,2008,2009 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from build_utils import expand_template, standard_dict
-from build_utils_codes import *
-
-import re
-
-
-# sources and sinks
-ss_signatures = ['s', 'i', 'f', 'c']
-
-ss_roots = [
-    'gr_vector_source_X',
-    'gr_vector_sink_X',
-    ]
-
-# regular blocks
-reg_signatures = ['ss', 'ii', 'ff', 'cc']
-
-
-def expand_h_cc_i (root, sig):
-    # root looks like 'gr_vector_sink_X'
-    name = re.sub ('X+', sig, root)
-    d = standard_dict (name, sig)
-    expand_template (d, root + '.h.t')
-    expand_template (d, root + '.cc.t')
-    expand_template (d, root + '.i.t')
-
-
-def generate ():
-    expand_h_cc_i ('gr_vector_sink_X', 'b')
-    expand_h_cc_i ('gr_vector_source_X', 'b')
-    for r in ss_roots:
-        for s in ss_signatures:
-            expand_h_cc_i (r, s)
-
-if __name__ == '__main__':
-    generate ()
-
-
diff --git a/gnuradio-core/src/lib/gengen/gengen.i b/gnuradio-core/src/lib/gengen/gengen.i
deleted file mode 100644
index 7d8c27fe68..0000000000
--- a/gnuradio-core/src/lib/gengen/gengen.i
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-%{
-#include "gr_endianness.h"
-%}
-
-%include "gr_endianness.i"
-
-%include "gengen_generated.i"
diff --git a/gnuradio-core/src/lib/gengen/gr_endianness.h b/gnuradio-core/src/lib/gengen/gr_endianness.h
deleted file mode 100644
index c4ecb1383e..0000000000
--- a/gnuradio-core/src/lib/gengen/gr_endianness.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-#ifndef INCLUDED_GR_ENDIANNESS_H
-#define INCLUDED_GR_ENDIANNESS_H
-
-typedef enum {GR_MSB_FIRST, GR_LSB_FIRST} gr_endianness_t;
-
-#endif /* INCLUDED_GR_ENDIANNESS_H */
diff --git a/gnuradio-core/src/lib/gengen/gr_endianness.i b/gnuradio-core/src/lib/gengen/gr_endianness.i
deleted file mode 100644
index 572b7a42fb..0000000000
--- a/gnuradio-core/src/lib/gengen/gr_endianness.i
+++ /dev/null
@@ -1,23 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-%include <gr_endianness.h>
diff --git a/gnuradio-core/src/lib/gengen/gr_vector_insert_X.cc.t b/gnuradio-core/src/lib/gengen/gr_vector_insert_X.cc.t
deleted file mode 100644
index 20968afe22..0000000000
--- a/gnuradio-core/src/lib/gengen/gr_vector_insert_X.cc.t
+++ /dev/null
@@ -1,100 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-// @WARNING@
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <@NAME@.h>
-#include <algorithm>
-#include <gr_io_signature.h>
-#include <stdexcept>
-
-#include <stdio.h>
-
-@NAME@::@NAME@(const std::vector<@TYPE@> &data, int periodicity, int offset)
-  : gr_block("@BASE_NAME@",
-	     gr_make_io_signature (1, 1, sizeof(@TYPE@)),
-	     gr_make_io_signature (1, 1, sizeof(@TYPE@))),
-    d_data(data),
-    d_offset(offset),
-    d_periodicity(periodicity)
-{
-    //printf("INITIAL: periodicity = %d, offset = %d\n", periodicity, offset);
-    // some sanity checks
-    assert(offset < periodicity);
-    assert(offset >= 0);
-    assert((size_t)periodicity > data.size());
-}
-
-int
-@NAME@::general_work(int noutput_items,
-		    gr_vector_int &ninput_items,
-		    gr_vector_const_void_star &input_items,
-		    gr_vector_void_star &output_items)
-{
-  @TYPE@ *out = (@TYPE@ *)output_items[0];
-  const @TYPE@ *in = (const @TYPE@ *)input_items[0];
-
-  int ii(0), oo(0);
-
-  while((oo < noutput_items) && (ii < ninput_items[0])) {
-
-    //printf("oo = %d, ii = %d, d_offset = %d, noutput_items = %d, ninput_items[0] = %d", oo, ii, d_offset, noutput_items, ninput_items[0]);
-    //printf(", d_periodicity = %d\n", d_periodicity);
-    
-    if(d_offset >= ((int)d_data.size())) { // if we are in the copy region
-        int max_copy = std::min( std::min( noutput_items - oo, ninput_items[0] - ii ), d_periodicity - d_offset );
-        //printf("copy %d from input\n", max_copy);
-        memcpy( &out[oo], &in[ii], sizeof(@TYPE@)*max_copy );
-        //printf(" * memcpy returned.\n");
-        ii += max_copy;
-        oo += max_copy;
-        d_offset = (d_offset + max_copy)%d_periodicity;
-
-    } 
-    else { // if we are in the insertion region
-        int max_copy = std::min( noutput_items - oo, ((int)d_data.size()) - d_offset );
-        //printf("copy %d from d_data[%d] to out[%d]\n", max_copy, d_offset, oo);
-        memcpy( &out[oo], &d_data[d_offset], sizeof(@TYPE@)*max_copy );
-        //printf(" * memcpy returned.\n");
-        oo += max_copy; 
-        d_offset = (d_offset + max_copy)%d_periodicity;
-        //printf(" ## (inelse) oo = %d, d_offset = %d\n", oo, d_offset);
-    }
-    
-      //printf(" # exit else, on to next loop.\n");
-  }
-  //printf(" # got out of loop\n");
-
-  //printf("consume = %d, produce = %d\n", ii, oo);
-  consume_each(ii);
-  return oo;
-}
-
-@NAME@_sptr
-gr_make_@BASE_NAME@ (const std::vector<@TYPE@> &data, int periodicity, int offset)
-{
-  return gnuradio::get_initial_sptr(new @NAME@ (data, periodicity, offset));
-}
-
diff --git a/gnuradio-core/src/lib/gengen/gr_vector_insert_X.h.t b/gnuradio-core/src/lib/gengen/gr_vector_insert_X.h.t
deleted file mode 100644
index 26f851700d..0000000000
--- a/gnuradio-core/src/lib/gengen/gr_vector_insert_X.h.t
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-// @WARNING@
-
-#ifndef @GUARD_NAME@
-#define @GUARD_NAME@
-
-#include <gr_core_api.h>
-#include <gr_block.h>
-
-class GR_CORE_API @NAME@;
-typedef boost::shared_ptr<@NAME@> @NAME@_sptr;
-
-/*!
- * \brief source of @TYPE@'s that gets its data from a vector
- * \ingroup source_blk
- */
-
-class @NAME@ : public gr_block {
-  friend GR_CORE_API @NAME@_sptr
-  gr_make_@BASE_NAME@(const std::vector<@TYPE@> &data, int periodicity, int offset);
-
-  std::vector<@TYPE@>	d_data;
-  int		d_offset;
-  int       d_periodicity;
-
-  @NAME@(const std::vector<@TYPE@> &data, int periodicity, int offset);
-
- public:
-  void rewind() {d_offset=0;}
-  virtual int general_work(int noutput_items,
-			   gr_vector_int &ninput_items,
-			   gr_vector_const_void_star &input_items,
-			   gr_vector_void_star &output_items);
-  void set_data(const std::vector<@TYPE@> &data){ d_data = data; rewind(); }
-};
-
-GR_CORE_API @NAME@_sptr
-gr_make_@BASE_NAME@(const std::vector<@TYPE@> &data, int periodicity, int offset=0);
-
-#endif
diff --git a/gnuradio-core/src/lib/gengen/gr_vector_insert_X.i.t b/gnuradio-core/src/lib/gengen/gr_vector_insert_X.i.t
deleted file mode 100644
index f3341eec4f..0000000000
--- a/gnuradio-core/src/lib/gengen/gr_vector_insert_X.i.t
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2012 Free Software Foundation, Inc.
- * 
- * This file is part of GNU Radio
- * 
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- * 
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-// @WARNING@
-
-GR_SWIG_BLOCK_MAGIC(gr,@BASE_NAME@);
-
-@NAME@_sptr
-gr_make_@BASE_NAME@ (const std::vector<@TYPE@> &data, int periodicity, int offset = 0)
-  throw(std::invalid_argument);
-
-class @NAME@ : public gr_block {
- public:
-  void rewind();
-  void set_data(const std::vector<@TYPE@> &data);
- private:
-  @NAME@ (const std::vector<@TYPE@> &data, int periodicity, int offset = 0);
-};
diff --git a/gnuradio-core/src/lib/gengen/gr_vector_sink_X.cc.t b/gnuradio-core/src/lib/gengen/gr_vector_sink_X.cc.t
deleted file mode 100644
index 2b8207c027..0000000000
--- a/gnuradio-core/src/lib/gengen/gr_vector_sink_X.cc.t
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2008,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-// @WARNING@
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <@NAME@.h>
-#include <algorithm>
-#include <gr_io_signature.h>
-#include <iostream>
-
-
-@NAME@::@NAME@ (int vlen)
-  : gr_sync_block ("@BASE_NAME@",
-		   gr_make_io_signature (1, 1, sizeof (@TYPE@) * vlen),
-		   gr_make_io_signature (0, 0, 0)),
-    d_vlen(vlen)
-{
-}
-
-int
-@NAME@::work (int noutput_items,
-		    gr_vector_const_void_star &input_items,
-		    gr_vector_void_star &output_items)
-{
-  @TYPE@ *iptr = (@TYPE@ *) input_items[0];
-  for (int i = 0; i < noutput_items * d_vlen; i++)
-    d_data.push_back (iptr[i]);
-  std::vector<gr_tag_t> tags;
-  get_tags_in_range(tags, 0, nitems_read(0), nitems_read(0) + noutput_items);
-  d_tags.insert(d_tags.end(), tags.begin(), tags.end());
-  return noutput_items;
-}
-
-
-@NAME@_sptr
-gr_make_@BASE_NAME@ (int vlen)
-{
-  return gnuradio::get_initial_sptr(new @NAME@ (vlen));
-}
-
-std::vector<@TYPE@>
-@NAME@::data () const
-{
-  return d_data;
-}
-
-std::vector<gr_tag_t>
-@NAME@::tags () const
-{
-  return d_tags;
-}
diff --git a/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t b/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t
deleted file mode 100644
index b7de1d101c..0000000000
--- a/gnuradio-core/src/lib/gengen/gr_vector_sink_X.h.t
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2008,2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-// @WARNING@
-
-#ifndef @GUARD_NAME@
-#define @GUARD_NAME@
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-
-class @NAME@;
-typedef boost::shared_ptr<@NAME@> @NAME@_sptr;
-
-GR_CORE_API @NAME@_sptr
-gr_make_@BASE_NAME@ (int vlen = 1);
-
-
-/*!
- * \brief @TYPE@ sink that writes to a vector
- * \ingroup sink_blk
- */
-
-class GR_CORE_API @NAME@ : public gr_sync_block {
-  friend GR_CORE_API @NAME@_sptr gr_make_@BASE_NAME@ (int vlen);
-  std::vector<@TYPE@>	d_data;
-  std::vector<gr_tag_t>	d_tags;
-  int			d_vlen;
-  @NAME@ (int vlen);
-
- public:
-  virtual int work (int noutput_items,
-		    gr_vector_const_void_star &input_items,
-		    gr_vector_void_star &output_items);
-
-  void reset() {d_data.clear();}
-  void clear() {reset(); }		// deprecated
-  std::vector<@TYPE@> data () const;
-  std::vector<gr_tag_t> tags () const;
-};
-
-#endif
diff --git a/gnuradio-core/src/lib/gengen/gr_vector_sink_X.i.t b/gnuradio-core/src/lib/gengen/gr_vector_sink_X.i.t
deleted file mode 100644
index ee0ebf378b..0000000000
--- a/gnuradio-core/src/lib/gengen/gr_vector_sink_X.i.t
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2008,2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-// @WARNING@
-
-
-GR_SWIG_BLOCK_MAGIC(gr,@BASE_NAME@);
-
-@SPTR_NAME@ gr_make_@BASE_NAME@ (int vlen = 1);
-
-class @NAME@ : public gr_sync_block {
- private:
-  @NAME@ (int vlen);
-
- public:
-  void clear();			// deprecated
-  void reset();
-  std::vector<@TYPE@> data () const;
-  std::vector<gr_tag_t> tags () const;
-};
-
diff --git a/gnuradio-core/src/lib/gengen/gr_vector_source_X.cc.t b/gnuradio-core/src/lib/gengen/gr_vector_source_X.cc.t
deleted file mode 100644
index 19272ee24b..0000000000
--- a/gnuradio-core/src/lib/gengen/gr_vector_source_X.cc.t
+++ /dev/null
@@ -1,124 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2008,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-// @WARNING@
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <@NAME@.h>
-#include <algorithm>
-#include <gr_io_signature.h>
-#include <stdexcept>
-
-@NAME@::@NAME@ (const std::vector<@TYPE@> &data, bool repeat, int vlen, const std::vector<gr_tag_t> &tags)
-  : gr_sync_block ("@BASE_NAME@",
-	       gr_make_io_signature (0, 0, 0),
-	       gr_make_io_signature (1, 1, sizeof (@TYPE@) * vlen)),
-    d_data (data),
-    d_repeat (repeat),
-    d_offset (0),
-    d_vlen (vlen),
-    d_tags (tags),
-    d_tagpos (0)
-{
-  if (tags.size() == 0) {
-    d_settags = 0;
-  } else {
-    d_settags = 1;
-    set_output_multiple(data.size() / vlen);
-  }
-  if ((data.size() % vlen) != 0)
-    throw std::invalid_argument("data length must be a multiple of vlen");
-}
-
-void
-@NAME@::set_data (const std::vector<@TYPE@> &data, const std::vector<gr_tag_t> &tags){
-  d_data = data;
-  d_tags = tags;
-  rewind();
-  if (tags.size() == 0) {
-    d_settags = false;
-  } else {
-    d_settags = true;
-  }
-}
-
-int
-@NAME@::work (int noutput_items,
-		    gr_vector_const_void_star &input_items,
-		    gr_vector_void_star &output_items)
-{
-  @TYPE@ *optr = (@TYPE@ *) output_items[0];
-
-  if (d_repeat){
-    unsigned int size = d_data.size ();
-    unsigned int offset = d_offset;
-    if (size == 0)
-      return -1;
-
-    if (d_settags) {
-	    int n_outputitems_per_vector = d_data.size() / d_vlen;
-	    for (int i = 0; i < noutput_items; i += n_outputitems_per_vector) {
-		    // FIXME do proper vector copy
-		    memcpy((void *) optr, (const void *) &d_data[0], size * sizeof (@TYPE@));
-		    optr += size;
-		    for (unsigned t = 0; t < d_tags.size(); t++) {
-			    add_item_tag(0, nitems_written(0)+i+d_tags[t].offset, d_tags[t].key, d_tags[t].value);
-		    }
-	    }
-    } else {
-	    for (int i = 0; i < noutput_items*d_vlen; i++){
-		    optr[i] = d_data[offset++];
-		    if (offset >= size) {
-			    offset = 0;
-		    }
-	    }
-    }
-
-
-    d_offset = offset;
-    return noutput_items;
-  } else {
-    if (d_offset >= d_data.size ())
-      return -1;			// Done!
-
-    unsigned n = std::min ((unsigned) d_data.size () - d_offset,
-                           (unsigned) noutput_items*d_vlen);
-    for (unsigned i = 0; i < n; i++) {
-      optr[i] = d_data[d_offset + i];
-    }
-    for (unsigned t = 0; t < d_tags.size(); t++) {
-      if ((d_tags[t].offset >= d_offset) && (d_tags[t].offset < d_offset+n))
-        add_item_tag(0, d_tags[t].offset, d_tags[t].key, d_tags[t].value);
-    }
-    d_offset += n;
-    return n/d_vlen;
-  }
-}
-
-@NAME@_sptr
-gr_make_@BASE_NAME@ (const std::vector<@TYPE@> &data, bool repeat, int vlen, const std::vector<gr_tag_t> &tags)
-{
-  return gnuradio::get_initial_sptr(new @NAME@ (data, repeat, vlen, tags));
-}
-
diff --git a/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t b/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t
deleted file mode 100644
index 041cc47a45..0000000000
--- a/gnuradio-core/src/lib/gengen/gr_vector_source_X.h.t
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2008,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-// @WARNING@
-
-#ifndef @GUARD_NAME@
-#define @GUARD_NAME@
-
-#include <gr_core_api.h>
-#include <gr_sync_block.h>
-
-class GR_CORE_API @NAME@;
-typedef boost::shared_ptr<@NAME@> @NAME@_sptr;
-
-/*!
- * \brief source of @TYPE@'s that gets its data from a vector
- * \ingroup source_blk
- */
-
-class @NAME@ : public gr_sync_block {
-  friend GR_CORE_API @NAME@_sptr
-    gr_make_@BASE_NAME@ (const std::vector<@TYPE@> &data, bool repeat, int vlen, const std::vector<gr_tag_t> &tags);
-
-  std::vector<@TYPE@>	d_data;
-  bool			d_repeat;
-  unsigned int		d_offset;
-  int			d_vlen;
-  bool d_settags;
-  std::vector<gr_tag_t>	d_tags;
-  unsigned int d_tagpos;
-
-  @NAME@ (const std::vector<@TYPE@> &data, bool repeat, int vlen, const std::vector<gr_tag_t> &tags);
-
- public:
-  void rewind() {d_offset=0;}
-  virtual int work (int noutput_items,
-		    gr_vector_const_void_star &input_items,
-		    gr_vector_void_star &output_items);
-  void set_data(const std::vector<@TYPE@> &data, const std::vector<gr_tag_t> &tags =  std::vector<gr_tag_t>());
-};
-
-GR_CORE_API @NAME@_sptr
-gr_make_@BASE_NAME@ (const std::vector<@TYPE@> &data, bool repeat = false, int vlen = 1, const std::vector<gr_tag_t> &tags = std::vector<gr_tag_t>());
-
-#endif
diff --git a/gnuradio-core/src/lib/gengen/gr_vector_source_X.i.t b/gnuradio-core/src/lib/gengen/gr_vector_source_X.i.t
deleted file mode 100644
index 1f1479f947..0000000000
--- a/gnuradio-core/src/lib/gengen/gr_vector_source_X.i.t
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004,2008,2012 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-// @WARNING@
-
-GR_SWIG_BLOCK_MAGIC(gr,@BASE_NAME@);
-
-@NAME@_sptr
-gr_make_@BASE_NAME@ (const std::vector<@TYPE@> &data, bool repeat = false, int vlen = 1, const std::vector<gr_tag_t> &tags=std::vector<gr_tag_t>())
-  throw(std::invalid_argument);
-
-class @NAME@ : public gr_sync_block {
- public:
-  void rewind();
-  void set_data(const std::vector<@TYPE@> &data, const std::vector<gr_tag_t> &tags = std::vector<gr_tag_t>());
- private:
-  @NAME@ (const std::vector<@TYPE@> &data, bool repeat, int vlen, const std::vector<gr_tag_t> &tags);
-};
diff --git a/gnuradio-core/src/lib/runtime/CMakeLists.txt b/gnuradio-core/src/lib/runtime/CMakeLists.txt
index a322d1b998..f3982f53cd 100644
--- a/gnuradio-core/src/lib/runtime/CMakeLists.txt
+++ b/gnuradio-core/src/lib/runtime/CMakeLists.txt
@@ -110,17 +110,9 @@ endif(ENABLE_GR_CTRLPORT)
 # Append gnuradio-core test sources
 ########################################################################
 list(APPEND test_gnuradio_core_sources
-    ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_block.cc
-    ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_hier_block2.cc
-    ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_hier_block2_derived.cc
     ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_buffer.cc
-    ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_flowgraph.cc
-    ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_top_block.cc
     ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_io_signature.cc
     ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_vmcircbuf.cc
-    ${CMAKE_CURRENT_SOURCE_DIR}/qa_block_tags.cc
-    ${CMAKE_CURRENT_SOURCE_DIR}/qa_runtime.cc
-    ${CMAKE_CURRENT_SOURCE_DIR}/qa_set_msg_handler.cc
     ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_logger.cc
 )
 
diff --git a/gnuradio-core/src/lib/runtime/gr_basic_block.h b/gnuradio-core/src/lib/runtime/gr_basic_block.h
index 31081698c7..66fb72d87e 100644
--- a/gnuradio-core/src/lib/runtime/gr_basic_block.h
+++ b/gnuradio-core/src/lib/runtime/gr_basic_block.h
@@ -301,9 +301,9 @@ class GR_CORE_API gr_basic_block : public gr_msg_accepter, public boost::enable_
    *    void msg_handler(pmt::pmt msg);
    * </pre>
    *
-   * (You may want to use boost::bind to massage your callable into the
-   * correct form.  See gr_nop.{h,cc} for an example that sets up a class
-   * method as the callback.)
+   * (You may want to use boost::bind to massage your callable into
+   * the correct form.  See gr::blocks::nop for an example that sets
+   * up a class method as the callback.)
    *
    * Blocks that desire to handle messages must call this method in their
    * constructors to register the handler that will be invoked when messages
diff --git a/gnuradio-core/src/lib/runtime/gr_top_block.h b/gnuradio-core/src/lib/runtime/gr_top_block.h
index 694e9575b4..9634b53f3c 100644
--- a/gnuradio-core/src/lib/runtime/gr_top_block.h
+++ b/gnuradio-core/src/lib/runtime/gr_top_block.h
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2007,2008,2009 Free Software Foundation, Inc.
+ * Copyright 2007-2009 Free Software Foundation, Inc.
  *
  * This file is part of GNU Radio
  *
@@ -83,7 +83,7 @@ public:
   /*!
    * Wait for a flowgraph to complete.  Flowgraphs complete when
    * either (1) all blocks indicate that they are done (typically only
-   * when using blocks.file_source, or gr.head, or (2) after stop() has been
+   * when using blocks.file_source, or blocks.head, or (2) after stop() has been
    * called to request shutdown.  Calling wait on a top_block that is
    * not running IS NOT an error (wait returns w/o blocking).
    */
diff --git a/gnuradio-core/src/lib/runtime/qa_block_tags.cc b/gnuradio-core/src/lib/runtime/qa_block_tags.cc
deleted file mode 100644
index c3c18cac01..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_block_tags.cc
+++ /dev/null
@@ -1,448 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <qa_block_tags.h>
-#include <gr_block.h>
-#include <gr_top_block.h>
-#include <gr_null_source.h>
-#include <gr_null_sink.h>
-#include <gr_head.h>
-#include <gr_annotator_alltoall.h>
-#include <gr_annotator_1to1.h>
-#include <gr_tags.h>
-
-
-// ----------------------------------------------------------------
-
-// set to 1 to turn on debug output
-// The debug output fully checks that the tags seen are what are expected. While
-// this behavior currently works with our implementation, there is no guarentee
-// that the tags will be coming in this specific order, so it's dangerous to
-// rely on this as a test of the tag system working. We would really want to
-// tags we know we should see and then test that they all occur once, but in no
-// particular order.
-#define QA_TAGS_DEBUG 0
-
-void
-qa_block_tags::t0 ()
-{
-  unsigned int N = 1000;
-  gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(int)));
-  gr_block_sptr head (gr_make_head(sizeof(int), N));
-  gr_block_sptr snk (gr_make_null_sink(sizeof(int)));
-
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, snk, 0);
-
-  //CPPUNIT_ASSERT_THROW(src->nitems_read(0), std::runtime_error);
-  //CPPUNIT_ASSERT_THROW(src->nitems_written(0), std::runtime_error);
-  CPPUNIT_ASSERT_EQUAL(src->nitems_read(0), (uint64_t)0);
-  CPPUNIT_ASSERT_EQUAL(src->nitems_written(0), (uint64_t)0);
-
-  tb->run();
-
-  CPPUNIT_ASSERT_THROW(src->nitems_read(0), std::invalid_argument);
-  CPPUNIT_ASSERT(src->nitems_written(0) >= N);
-  CPPUNIT_ASSERT_EQUAL(snk->nitems_read(0), (uint64_t)1000);
-  CPPUNIT_ASSERT_THROW(snk->nitems_written(0), std::invalid_argument);
-}
-
-
-void
-qa_block_tags::t1 ()
-{
-  int N = 40000;
-  gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(int)));
-  gr_block_sptr head (gr_make_head(sizeof(int), N));
-  gr_annotator_alltoall_sptr ann0 (gr_make_annotator_alltoall(10000, sizeof(int)));
-  gr_annotator_alltoall_sptr ann1 (gr_make_annotator_alltoall(10000, sizeof(int)));
-  gr_annotator_alltoall_sptr ann2 (gr_make_annotator_alltoall(10000, sizeof(int)));
-  gr_annotator_alltoall_sptr ann3 (gr_make_annotator_alltoall(10000, sizeof(int)));
-  gr_annotator_alltoall_sptr ann4 (gr_make_annotator_alltoall(10000, sizeof(int)));
-  gr_block_sptr snk0 (gr_make_null_sink(sizeof(int)));
-  gr_block_sptr snk1 (gr_make_null_sink(sizeof(int)));
-
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, ann0, 0);
-
-  tb->connect(ann0, 0, ann1, 0);
-  tb->connect(ann0, 1, ann2, 0);
-  tb->connect(ann1, 0, ann3, 0);
-  tb->connect(ann2, 0, ann4, 0);
-
-  tb->connect(ann3, 0, snk0, 0);
-  tb->connect(ann4, 0, snk1, 0);
-
-  tb->run();
-
-  std::vector<gr_tag_t> tags0 = ann0->data();
-  std::vector<gr_tag_t> tags3 = ann3->data();
-  std::vector<gr_tag_t> tags4 = ann4->data();
-
-  // The first annotator does not receive any tags from the null sink upstream
-  CPPUNIT_ASSERT_EQUAL(tags0.size(), (size_t)0);
-  CPPUNIT_ASSERT_EQUAL(tags3.size(), (size_t)8);
-  CPPUNIT_ASSERT_EQUAL(tags4.size(), (size_t)8);
-
-#if QA_TAGS_DEBUG
-  // Kludge together the tags that we know should result from the above graph
-  std::stringstream str0, str1, str2;
-  str0 << ann0->name() << ann0->unique_id();
-  str1 << ann1->name() << ann1->unique_id();
-  str2 << ann2->name() << ann2->unique_id();
-
-  pmt::pmt_t expected_tags3[8];
-  expected_tags3[0] = mp(pmt::from_uint64(0),     mp(str1.str()), mp("seq"), mp(0));
-  expected_tags3[1] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
-  expected_tags3[2] = mp(pmt::from_uint64(10000), mp(str1.str()), mp("seq"), mp(1));
-  expected_tags3[3] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(2));
-  expected_tags3[4] = mp(pmt::from_uint64(20000), mp(str1.str()), mp("seq"), mp(2));
-  expected_tags3[5] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(4));
-  expected_tags3[6] = mp(pmt::from_uint64(30000), mp(str1.str()), mp("seq"), mp(3));
-  expected_tags3[7] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(6));
-
-  pmt::pmt_t expected_tags4[8];
-  expected_tags4[0] = mp(pmt::from_uint64(0),     mp(str2.str()), mp("seq"), mp(0));
-  expected_tags4[1] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(1));
-  expected_tags4[2] = mp(pmt::from_uint64(10000), mp(str2.str()), mp("seq"), mp(1));
-  expected_tags4[3] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(3));
-  expected_tags4[4] = mp(pmt::from_uint64(20000), mp(str2.str()), mp("seq"), mp(2));
-  expected_tags4[5] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(5));
-  expected_tags4[6] = mp(pmt::from_uint64(30000), mp(str2.str()), mp("seq"), mp(3));
-  expected_tags4[7] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(7));
-
-  std::cout << std::endl << "qa_block_tags::t1" << std::endl;
-
-  // For annotator 3, we know it gets tags from ann0 and ann1, test this
-  for(size_t i = 0; i < tags3.size(); i++) {
-    std::cout << "tags3[" << i << "] = " << tags3[i] << "\t\t" << expected_tags3[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags3[i]), pmt::write_string(expected_tags3[i]));
-  }
-
-  // For annotator 4, we know it gets tags from ann0 and ann2, test this
-  std::cout << std::endl;
-  for(size_t i = 0; i < tags4.size(); i++) {
-    std::cout << "tags4[" << i << "] = " << tags4[i] << "\t\t" << expected_tags4[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags4[i]), pmt::write_string(expected_tags4[i]));
-  }
-#endif
-}
-
-void
-qa_block_tags::t2 ()
-{
-  int N = 40000;
-  gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(int)));
-  gr_block_sptr head (gr_make_head(sizeof(int), N));
-  gr_annotator_alltoall_sptr ann0 (gr_make_annotator_alltoall(10000, sizeof(int)));
-  gr_annotator_alltoall_sptr ann1 (gr_make_annotator_alltoall(10000, sizeof(int)));
-  gr_annotator_alltoall_sptr ann2 (gr_make_annotator_alltoall(10000, sizeof(int)));
-  gr_annotator_alltoall_sptr ann3 (gr_make_annotator_alltoall(10000, sizeof(int)));
-  gr_annotator_alltoall_sptr ann4 (gr_make_annotator_alltoall(10000, sizeof(int)));
-  gr_block_sptr snk0 (gr_make_null_sink(sizeof(int)));
-  gr_block_sptr snk1 (gr_make_null_sink(sizeof(int)));
-  gr_block_sptr snk2 (gr_make_null_sink(sizeof(int)));
-
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, ann0, 0);
-
-  tb->connect(ann0, 0, ann1, 0);
-  tb->connect(ann0, 1, ann1, 1);
-  tb->connect(ann1, 0, ann2, 0);
-  tb->connect(ann1, 1, ann3, 0);
-  tb->connect(ann1, 2, ann4, 0);
-
-  tb->connect(ann2, 0, snk0, 0);
-  tb->connect(ann3, 0, snk1, 0);
-  tb->connect(ann4, 0, snk2, 0);
-
-  tb->run();
-
-  std::vector<gr_tag_t> tags0 = ann0->data();
-  std::vector<gr_tag_t> tags1 = ann1->data();
-  std::vector<gr_tag_t> tags2 = ann2->data();
-  std::vector<gr_tag_t> tags3 = ann4->data();
-  std::vector<gr_tag_t> tags4 = ann4->data();
-
-  // The first annotator does not receive any tags from the null sink upstream
-  CPPUNIT_ASSERT_EQUAL(tags0.size(), (size_t)0);
-  CPPUNIT_ASSERT_EQUAL(tags1.size(), (size_t)8);
-
-  // Make sure the rest all have 12 tags
-  CPPUNIT_ASSERT_EQUAL(tags2.size(), (size_t)12);
-  CPPUNIT_ASSERT_EQUAL(tags3.size(), (size_t)12);
-  CPPUNIT_ASSERT_EQUAL(tags4.size(), (size_t)12);
-
-
-#if QA_TAGS_DEBUG
-  // Kludge together the tags that we know should result from the above graph
-  std::stringstream str0, str1;
-  str0 << ann0->name() << ann0->unique_id();
-  str1 << ann1->name() << ann1->unique_id();
-
-  pmt::pmt_t expected_tags2[12];
-  expected_tags2[0] = mp(pmt::from_uint64(0),     mp(str1.str()), mp("seq"), mp(0));
-  expected_tags2[1] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
-  expected_tags2[2] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(1));
-  expected_tags2[3] = mp(pmt::from_uint64(10000), mp(str1.str()), mp("seq"), mp(3));
-  expected_tags2[4] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(2));
-  expected_tags2[5] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(3));
-  expected_tags2[6] = mp(pmt::from_uint64(20000), mp(str1.str()), mp("seq"), mp(6));
-  expected_tags2[7] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(4));
-  expected_tags2[8] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(5));
-  expected_tags2[9] = mp(pmt::from_uint64(30000), mp(str1.str()), mp("seq"), mp(9));
-  expected_tags2[10] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(6));
-  expected_tags2[11] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(7));
-
-  pmt::pmt_t expected_tags4[12];
-  expected_tags4[0] = mp(pmt::from_uint64(0),     mp(str1.str()), mp("seq"), mp(2));
-  expected_tags4[1] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
-  expected_tags4[2] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(1));
-  expected_tags4[3] = mp(pmt::from_uint64(10000), mp(str1.str()), mp("seq"), mp(5));
-  expected_tags4[4] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(2));
-  expected_tags4[5] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(3));
-  expected_tags4[6] = mp(pmt::from_uint64(20000), mp(str1.str()), mp("seq"), mp(8));
-  expected_tags4[7] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(4));
-  expected_tags4[8] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(5));
-  expected_tags4[9] = mp(pmt::from_uint64(30000), mp(str1.str()), mp("seq"), mp(11));
-  expected_tags4[10] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(6));
-  expected_tags4[11] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(7));
-
-  std::cout << std::endl << "qa_block_tags::t2" << std::endl;
-
-  // For annotator[2-4], we know it gets tags from ann0 and ann1
-  // but the tags from the different outputs of ann1 are different for each.
-  // Just testing ann2 and ann4; if they are correct it would be
-  // inconceivable for ann3 to have it wrong.
-  for(size_t i = 0; i < tags2.size(); i++) {
-    std::cout << "tags2[" << i << "] = " << tags2[i] << "\t\t" << expected_tags2[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags2[i]), pmt::write_string(expected_tags2[i]));
-  }
-
-  std::cout << std::endl;
-  for(size_t i = 0; i < tags4.size(); i++) {
-    std::cout << "tags2[" << i << "] = " << tags4[i] << "\t\t" << expected_tags4[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags4[i]), pmt::write_string(expected_tags4[i]));
-  }
-#endif
-}
-
-
-void
-qa_block_tags::t3 ()
-{
-  int N = 40000;
-  gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(int)));
-  gr_block_sptr head (gr_make_head(sizeof(int), N));
-  gr_annotator_1to1_sptr ann0 (gr_make_annotator_1to1(10000, sizeof(int)));
-  gr_annotator_alltoall_sptr ann1 (gr_make_annotator_alltoall(10000, sizeof(int)));
-  gr_annotator_alltoall_sptr ann2 (gr_make_annotator_alltoall(10000, sizeof(int)));
-  gr_annotator_1to1_sptr ann3 (gr_make_annotator_1to1(10000, sizeof(int)));
-  gr_annotator_1to1_sptr ann4 (gr_make_annotator_1to1(10000, sizeof(int)));
-  gr_block_sptr snk0 (gr_make_null_sink(sizeof(int)));
-  gr_block_sptr snk1 (gr_make_null_sink(sizeof(int)));
-
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, ann0, 0);
-  tb->connect(head, 0, ann0, 1);
-
-  tb->connect(ann0, 0, ann1, 0);
-  tb->connect(ann0, 1, ann2, 0);
-  tb->connect(ann1, 0, ann3, 0);
-  tb->connect(ann2, 0, ann4, 0);
-
-  tb->connect(ann3, 0, snk0, 0);
-  tb->connect(ann4, 0, snk1, 0);
-
-  tb->run();
-
-
-  std::vector<gr_tag_t> tags0 = ann0->data();
-  std::vector<gr_tag_t> tags3 = ann3->data();
-  std::vector<gr_tag_t> tags4 = ann4->data();
-
-  // The first annotator does not receive any tags from the null sink upstream
-  CPPUNIT_ASSERT_EQUAL(tags0.size(), (size_t)0);
-  CPPUNIT_ASSERT_EQUAL(tags3.size(), (size_t)8);
-  CPPUNIT_ASSERT_EQUAL(tags4.size(), (size_t)8);
-
-#if QA_TAGS_DEBUG
-  // Kludge together the tags that we know should result from the above graph
-  std::stringstream str0, str1, str2;
-  str0 << ann0->name() << ann0->unique_id();
-  str1 << ann1->name() << ann1->unique_id();
-  str2 << ann2->name() << ann2->unique_id();
-
-  pmt::pmt_t expected_tags3[8];
-  expected_tags3[0] = mp(pmt::from_uint64(0),     mp(str1.str()), mp("seq"), mp(0));
-  expected_tags3[1] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
-  expected_tags3[2] = mp(pmt::from_uint64(10000), mp(str1.str()), mp("seq"), mp(1));
-  expected_tags3[3] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(2));
-  expected_tags3[4] = mp(pmt::from_uint64(20000), mp(str1.str()), mp("seq"), mp(2));
-  expected_tags3[5] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(4));
-  expected_tags3[6] = mp(pmt::from_uint64(30000), mp(str1.str()), mp("seq"), mp(3));
-  expected_tags3[7] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(6));
-
-  pmt::pmt_t expected_tags4[8];
-  expected_tags4[0] = mp(pmt::from_uint64(0),     mp(str2.str()), mp("seq"), mp(0));
-  expected_tags4[1] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(1));
-  expected_tags4[2] = mp(pmt::from_uint64(10000), mp(str2.str()), mp("seq"), mp(1));
-  expected_tags4[3] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(3));
-  expected_tags4[4] = mp(pmt::from_uint64(20000), mp(str2.str()), mp("seq"), mp(2));
-  expected_tags4[5] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(5));
-  expected_tags4[6] = mp(pmt::from_uint64(30000), mp(str2.str()), mp("seq"), mp(3));
-  expected_tags4[7] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(7));
-
-  std::cout << std::endl << "qa_block_tags::t3" << std::endl;
-
-  // For annotator 3, we know it gets tags from ann0 and ann1, test this
-  for(size_t i = 0; i < tags3.size(); i++) {
-    std::cout << "tags3[" << i << "] = " << tags3[i] << "\t\t" << expected_tags3[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags3[i]), pmt::write_string(expected_tags3[i]));
-  }
-
-  // For annotator 4, we know it gets tags from ann0 and ann2, test this
-  std::cout << std::endl;
-  for(size_t i = 0; i < tags4.size(); i++) {
-    std::cout << "tags4[" << i << "] = " << tags4[i] << "\t\t" << expected_tags4[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags4[i]), pmt::write_string(expected_tags4[i]));
-  }
-#endif
-}
-
-
-void
-qa_block_tags::t4 ()
-{
-  int N = 40000;
-  gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(int)));
-  gr_block_sptr head (gr_make_head(sizeof(int), N));
-  gr_annotator_1to1_sptr ann0 (gr_make_annotator_1to1(10000, sizeof(int)));
-  gr_annotator_1to1_sptr ann1 (gr_make_annotator_1to1(10000, sizeof(int)));
-  gr_annotator_1to1_sptr ann2 (gr_make_annotator_1to1(10000, sizeof(int)));
-  gr_block_sptr snk0 (gr_make_null_sink(sizeof(int)));
-  gr_block_sptr snk1 (gr_make_null_sink(sizeof(int)));
-
-  // using 1-to-1 tag propagation without having equal number of
-  // ins and outs. Make sure this works; will just exit run early.
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, ann0, 0);
-  tb->connect(ann0, 0, ann1, 0);
-  tb->connect(ann0, 1, ann2, 0);
-  tb->connect(ann1, 0, snk0, 0);
-  tb->connect(ann2, 0, snk1, 0);
-
-  std::cerr << std::endl
-	    << "NOTE: This is supposed to produce an error from gr_block_executor"
-	    << std::endl;
-  tb->run();
-}
-
-
-/*
-void
-qa_block_tags::t5 ()
-{
-  int N = 40000;
-  gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(float)));
-  gr_block_sptr head (gr_make_head(sizeof(float), N));
-  gr_annotator_alltoall_sptr ann0 (gr_make_annotator_alltoall(10000, sizeof(float)));
-  gr_annotator_alltoall_sptr ann1 (gr_make_annotator_alltoall(10000, sizeof(float)));
-  gr_annotator_alltoall_sptr ann2 (gr_make_annotator_alltoall(1000,  sizeof(float)));
-  gr_block_sptr snk0 (gr_make_null_sink(sizeof(float)));
-
-  // Rate change blocks
-  gr_keep_one_in_n_sptr dec10 (gr_make_keep_one_in_n(sizeof(float), 10));
-
-  tb->connect(src,  0, head, 0);
-  tb->connect(head, 0, ann0, 0);
-  tb->connect(ann0, 0, ann1, 0);
-  tb->connect(ann1, 0, dec10, 0);
-  tb->connect(dec10, 0, ann2, 0);
-  tb->connect(ann2, 0, snk0, 0);
-
-  tb->run();
-
-  std::vector<gr_tag_t> tags0 = ann0->data();
-  std::vector<gr_tag_t> tags1 = ann1->data();
-  std::vector<gr_tag_t> tags2 = ann2->data();
-
-  // The first annotator does not receive any tags from the null sink upstream
-  CPPUNIT_ASSERT_EQUAL(tags0.size(), (size_t)0);
-  CPPUNIT_ASSERT_EQUAL(tags1.size(), (size_t)4);
-  CPPUNIT_ASSERT_EQUAL(tags2.size(), (size_t)8);
-
-
-#if QA_TAGS_DEBUG
-  // Kludge together the tags that we know should result from the above graph
-  std::stringstream str0, str1, str2;
-  str0 << ann0->name() << ann0->unique_id();
-  str1 << ann1->name() << ann1->unique_id();
-  str2 << ann2->name() << ann2->unique_id();
-
-  pmt::pmt_t expected_tags1[5];
-  expected_tags1[0] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
-  expected_tags1[1] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(1));
-  expected_tags1[2] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(2));
-  expected_tags1[3] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(3));
-
-  pmt::pmt_t expected_tags2[10];
-  expected_tags2[0] = mp(pmt::from_uint64(0),    mp(str1.str()), mp("seq"), mp(0));
-  expected_tags2[1] = mp(pmt::from_uint64(0),    mp(str0.str()), mp("seq"), mp(0));
-  expected_tags2[2] = mp(pmt::from_uint64(1000), mp(str1.str()), mp("seq"), mp(1));
-  expected_tags2[3] = mp(pmt::from_uint64(1000), mp(str0.str()), mp("seq"), mp(1));
-  expected_tags2[4] = mp(pmt::from_uint64(2000), mp(str1.str()), mp("seq"), mp(2));
-  expected_tags2[5] = mp(pmt::from_uint64(2000), mp(str0.str()), mp("seq"), mp(2));
-  expected_tags2[6] = mp(pmt::from_uint64(3000), mp(str1.str()), mp("seq"), mp(3));
-  expected_tags2[7] = mp(pmt::from_uint64(3000), mp(str0.str()), mp("seq"), mp(3));
-  expected_tags2[8] = mp(pmt::from_uint64(4000), mp(str1.str()), mp("seq"), mp(4));
-  expected_tags2[9] = mp(pmt::from_uint64(4000), mp(str0.str()), mp("seq"), mp(4));
-
-  std::cout << std::endl << "qa_block_tags::t5" << std::endl;
-
-  // annotator 1 gets tags from annotator 0
-  std::cout << "tags1.size(): " << tags1.size() << std::endl;
-  for(size_t i = 0; i < tags1.size(); i++) {
-    std::cout << "tags1[" << i << "] = " << tags1[i] << "\t\t" << expected_tags1[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags1[i]), pmt::write_string(expected_tags1[i]));
-  }
-
-  // annotator 2 gets tags from annotators 0 and 1
-  std::cout << std::endl;
-  std::cout << "tags2.size(): " << tags2.size() << std::endl;
-  for(size_t i = 0; i < tags2.size(); i++) {
-    std::cout << "tags2[" << i << "] = " << tags2[i] << "\t\t" << expected_tags2[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags2[i]), pmt::write_string(expected_tags2[i]));
-  }
-#endif
-}
-*/
diff --git a/gnuradio-core/src/lib/runtime/qa_block_tags.h b/gnuradio-core/src/lib/runtime/qa_block_tags.h
deleted file mode 100644
index 039d345cdf..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_block_tags.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_QA_BLOCK_TAGS_H
-#define INCLUDED_QA_BLOCK_TAGS_H
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-#include <stdexcept>
-
-class qa_block_tags : public CppUnit::TestCase {
-
-  CPPUNIT_TEST_SUITE (qa_block_tags);
-  CPPUNIT_TEST (t0);
-  CPPUNIT_TEST (t1);
-  CPPUNIT_TEST (t2);
-  CPPUNIT_TEST (t3);
-  CPPUNIT_TEST (t4);
-  //CPPUNIT_TEST (t5);
-  CPPUNIT_TEST_SUITE_END ();
-
- private:
-  void t0 ();
-  void t1 ();
-  void t2 ();
-  void t3 ();
-  void t4 ();
-  //void t5 ();
-
-};
-
-
-#endif /* INCLUDED_QA_BLOCK_TAGS_H */
diff --git a/gnuradio-core/src/lib/runtime/qa_gr_block.cc b/gnuradio-core/src/lib/runtime/qa_gr_block.cc
deleted file mode 100644
index aeab5b74a8..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_gr_block.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <qa_gr_block.h>
-#include <gr_block.h>
-#include <gr_io_signature.h>
-#include <gr_null_sink.h>
-#include <gr_null_source.h>
-
-
-// ----------------------------------------------------------------
-
-
-void
-qa_gr_block::t0 ()
-{
-  // test creation of sources
-  gr_block_sptr src1 (gr_make_null_source (sizeof (int)));
-  CPPUNIT_ASSERT_EQUAL (std::string ("null_source"), src1->name ());
-  CPPUNIT_ASSERT_EQUAL (0, src1->input_signature()->max_streams ());
-  CPPUNIT_ASSERT_EQUAL (1, src1->output_signature()->min_streams ());
-  CPPUNIT_ASSERT_EQUAL (1, src1->output_signature()->max_streams ());
-  CPPUNIT_ASSERT_EQUAL ((int) sizeof(int),
-			src1->output_signature()->sizeof_stream_item (0));
-
-  gr_block_sptr src2 (gr_make_null_source (sizeof (short)));
-  CPPUNIT_ASSERT_EQUAL (std::string ("null_source"), src2->name ());
-  CPPUNIT_ASSERT_EQUAL (0, src2->input_signature()->max_streams ());
-  CPPUNIT_ASSERT_EQUAL (1, src2->output_signature()->min_streams ());
-  CPPUNIT_ASSERT_EQUAL (1, src2->output_signature()->max_streams ());
-  CPPUNIT_ASSERT_EQUAL ((int) sizeof (short),
-			src2->output_signature()->sizeof_stream_item (0));
-}
-
-
-void
-qa_gr_block::t1 ()
-{
-  // test creation of sinks
-  gr_block_sptr dst1 (gr_make_null_sink (sizeof (int)));
-  CPPUNIT_ASSERT_EQUAL (std::string ("null_sink"), dst1->name ());
-  CPPUNIT_ASSERT_EQUAL (1, dst1->input_signature()->min_streams ());
-  CPPUNIT_ASSERT_EQUAL (1, dst1->input_signature()->max_streams ());
-  CPPUNIT_ASSERT_EQUAL ((int) sizeof (int),
-			dst1->input_signature()->sizeof_stream_item (0));
-
-  CPPUNIT_ASSERT_EQUAL (0, dst1->output_signature()->max_streams ());
-
-  gr_block_sptr dst2 (gr_make_null_sink (sizeof (short)));
-  CPPUNIT_ASSERT_EQUAL (std::string ("null_sink"), dst2->name ());
-  CPPUNIT_ASSERT_EQUAL (1, dst2->input_signature()->min_streams ());
-  CPPUNIT_ASSERT_EQUAL (1, dst2->input_signature()->max_streams ());
-  CPPUNIT_ASSERT_EQUAL ((int) sizeof (short),
-			dst2->input_signature()->sizeof_stream_item (0));
-  CPPUNIT_ASSERT_EQUAL (0, dst2->output_signature()->max_streams ());
-}
-
-void
-qa_gr_block::t2 ()
-{
-}
-
-void
-qa_gr_block::t3 ()
-{
-}
diff --git a/gnuradio-core/src/lib/runtime/qa_gr_block.h b/gnuradio-core/src/lib/runtime/qa_gr_block.h
deleted file mode 100644
index 14c7c40d1f..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_gr_block.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2004 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_QA_GR_BLOCK_H
-#define INCLUDED_QA_GR_BLOCK_H
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-#include <stdexcept>
-
-class qa_gr_block : public CppUnit::TestCase {
-
-  CPPUNIT_TEST_SUITE (qa_gr_block);
-  CPPUNIT_TEST (t0);
-  CPPUNIT_TEST (t1);
-  CPPUNIT_TEST (t2);
-  CPPUNIT_TEST (t3);
-  CPPUNIT_TEST_SUITE_END ();
-
- private:
-  void t0 ();
-  void t1 ();
-  void t2 ();
-  void t3 ();
-
-};
-
-
-#endif /* INCLUDED_QA_GR_BLOCK_H */
diff --git a/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.cc b/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.cc
deleted file mode 100644
index cce83cb0a0..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.cc
+++ /dev/null
@@ -1,245 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <qa_gr_flowgraph.h>
-#include <gr_flowgraph.h>
-#include <gr_nop.h>
-#include <gr_null_source.h>
-#include <gr_null_sink.h>
-
-void qa_gr_flowgraph::t0()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  CPPUNIT_ASSERT(fg);
-}
-
-void qa_gr_flowgraph::t1_connect()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr nop1 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop2 = gr_make_nop(sizeof(int));
-
-  fg->connect(nop1, 0, nop2, 0);
-}
-
-void qa_gr_flowgraph::t2_connect_invalid_src_port_neg()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr nop1 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop2 = gr_make_nop(sizeof(int));
-
-  CPPUNIT_ASSERT_THROW(fg->connect(nop1, -1, nop2, 0), std::invalid_argument);
-}
-
-void qa_gr_flowgraph::t3_connect_src_port_exceeds()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  CPPUNIT_ASSERT_THROW(fg->connect(src, 1, dst, 0), std::invalid_argument);
-}
-
-void qa_gr_flowgraph::t4_connect_invalid_dst_port_neg()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr nop1 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop2 = gr_make_nop(sizeof(int));
-
-  CPPUNIT_ASSERT_THROW(fg->connect(nop1, 0, nop2, -1), std::invalid_argument);
-}
-
-void qa_gr_flowgraph::t5_connect_dst_port_exceeds()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  CPPUNIT_ASSERT_THROW(fg->connect(src, 0, dst, 1), std::invalid_argument);
-}
-
-void qa_gr_flowgraph::t6_connect_dst_in_use()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr src1 = gr_make_null_source(sizeof(int));
-  gr_block_sptr src2 = gr_make_null_source(sizeof(int));
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  fg->connect(src1, 0, dst, 0);
-  CPPUNIT_ASSERT_THROW(fg->connect(src2, 0, dst, 0), std::invalid_argument);
-}
-
-void qa_gr_flowgraph::t7_connect_one_src_two_dst()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr dst1 = gr_make_null_sink(sizeof(int));
-  gr_block_sptr dst2 = gr_make_null_sink(sizeof(int));
-
-  fg->connect(src, 0, dst1, 0);
-  fg->connect(src, 0, dst2, 0);
-}
-
-void qa_gr_flowgraph::t8_connect_type_mismatch()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr nop1 = gr_make_nop(sizeof(char));
-  gr_block_sptr nop2 = gr_make_nop(sizeof(int));
-
-  CPPUNIT_ASSERT_THROW(fg->connect(nop1, 0, nop2, 0), std::invalid_argument);
-}
-
-void qa_gr_flowgraph::t9_disconnect()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr nop1 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop2 = gr_make_nop(sizeof(int));
-
-  fg->connect(nop1, 0, nop2, 0);
-  fg->disconnect(nop1, 0, nop2, 0);
-}
-
-void qa_gr_flowgraph::t10_disconnect_unconnected_block()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr nop1 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop2 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop3 = gr_make_nop(sizeof(int));
-
-  fg->connect(nop1, 0, nop2, 0);
-  CPPUNIT_ASSERT_THROW(fg->disconnect(nop1, 0, nop3, 0), std::invalid_argument);
-}
-
-void qa_gr_flowgraph::t11_disconnect_unconnected_port()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr nop1 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop2 = gr_make_nop(sizeof(int));
-
-  fg->connect(nop1, 0, nop2, 0);
-  CPPUNIT_ASSERT_THROW(fg->disconnect(nop1, 0, nop2, 1), std::invalid_argument);
-}
-
-void qa_gr_flowgraph::t12_validate()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr nop1 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop2 = gr_make_nop(sizeof(int));
-
-  fg->connect(nop1, 0, nop2, 0);
-  fg->validate();
-}
-
-void qa_gr_flowgraph::t13_validate_missing_input_assignment()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr nop1 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop2 = gr_make_nop(sizeof(int));
-
-  fg->connect(nop1, 0, nop2, 0);
-  fg->connect(nop1, 0, nop2, 2);
-  CPPUNIT_ASSERT_THROW(fg->validate(), std::runtime_error);
-}
-
-void qa_gr_flowgraph::t14_validate_missing_output_assignment()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr nop1 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop2 = gr_make_nop(sizeof(int));
-
-  fg->connect(nop1, 0, nop2, 0);
-  fg->connect(nop1, 2, nop2, 1);
-  CPPUNIT_ASSERT_THROW(fg->validate(), std::runtime_error);
-}
-
-void qa_gr_flowgraph::t15_clear()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr nop1 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop2 = gr_make_nop(sizeof(int));
-
-  fg->connect(nop1, 0, nop2, 0);
-
-  CPPUNIT_ASSERT(fg->edges().size() == 1);
-  CPPUNIT_ASSERT(fg->calc_used_blocks().size() == 2);
-
-  fg->clear();
-
-  CPPUNIT_ASSERT(fg->edges().size() == 0);
-  CPPUNIT_ASSERT(fg->calc_used_blocks().size() == 0);
-}
-
-void qa_gr_flowgraph::t16_partition()
-{
-  gr_flowgraph_sptr fg = gr_make_flowgraph();
-
-  gr_block_sptr nop11 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop12 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop13 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop14 = gr_make_nop(sizeof(int));
-
-  gr_block_sptr nop21 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop22 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop23 = gr_make_nop(sizeof(int));
-
-  gr_block_sptr nop31 = gr_make_nop(sizeof(int));
-  gr_block_sptr nop32 = gr_make_nop(sizeof(int));
-
-  // Build disjoint graph #1
-  fg->connect(nop11, 0, nop12, 0);
-  fg->connect(nop12, 0, nop13, 0);
-  fg->connect(nop13, 0, nop14, 0);
-
-  // Build disjoint graph #2
-  fg->connect(nop21, 0, nop22, 0);
-  fg->connect(nop22, 0, nop23, 0);
-
-  // Build disjoint graph #3
-  fg->connect(nop31, 0, nop32, 0);
-
-  std::vector<gr_basic_block_vector_t> graphs = fg->partition();
-
-  CPPUNIT_ASSERT(graphs.size() == 3);
-  CPPUNIT_ASSERT(graphs[0].size() == 4);
-  CPPUNIT_ASSERT(graphs[1].size() == 3);
-  CPPUNIT_ASSERT(graphs[2].size() == 2);
-}
diff --git a/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.h b/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.h
deleted file mode 100644
index 2c2686f71b..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_QA_GR_FLOWGRAPH_H
-#define INCLUDED_QA_GR_FLOWGRAPH_H
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-#include <stdexcept>
-
-class qa_gr_flowgraph : public CppUnit::TestCase
-{
-  CPPUNIT_TEST_SUITE(qa_gr_flowgraph);
-
-  CPPUNIT_TEST(t0);
-  CPPUNIT_TEST(t1_connect);
-  CPPUNIT_TEST(t2_connect_invalid_src_port_neg);
-  CPPUNIT_TEST(t3_connect_src_port_exceeds);
-  CPPUNIT_TEST(t4_connect_invalid_dst_port_neg);
-  CPPUNIT_TEST(t5_connect_dst_port_exceeds);
-  CPPUNIT_TEST(t6_connect_dst_in_use);
-  CPPUNIT_TEST(t7_connect_one_src_two_dst);
-  CPPUNIT_TEST(t8_connect_type_mismatch);
-  CPPUNIT_TEST(t9_disconnect);
-  CPPUNIT_TEST(t10_disconnect_unconnected_block);
-  CPPUNIT_TEST(t11_disconnect_unconnected_port);
-  CPPUNIT_TEST(t12_validate);
-  CPPUNIT_TEST(t13_validate_missing_input_assignment);
-  CPPUNIT_TEST(t14_validate_missing_output_assignment);
-  CPPUNIT_TEST(t15_clear);
-  CPPUNIT_TEST(t16_partition);
-
-  CPPUNIT_TEST_SUITE_END();
-
-private:
-
-  void t0();
-  void t1_connect();
-  void t2_connect_invalid_src_port_neg();
-  void t3_connect_src_port_exceeds();
-  void t4_connect_invalid_dst_port_neg();
-  void t5_connect_dst_port_exceeds();
-  void t6_connect_dst_in_use();
-  void t7_connect_one_src_two_dst();
-  void t8_connect_type_mismatch();
-  void t9_disconnect();
-  void t10_disconnect_unconnected_block();
-  void t11_disconnect_unconnected_port();
-  void t12_validate();
-  void t13_validate_missing_input_assignment();
-  void t14_validate_missing_output_assignment();
-  void t15_clear();
-  void t16_partition();
-};
-
-#endif /* INCLUDED_QA_GR_FLOWGRAPH_H */
diff --git a/gnuradio-core/src/lib/runtime/qa_gr_hier_block2.cc b/gnuradio-core/src/lib/runtime/qa_gr_hier_block2.cc
deleted file mode 100644
index 9844d33814..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_gr_hier_block2.cc
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2008,2009 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <qa_gr_hier_block2.h>
-#include <gr_hier_block2.h>
-#include <gr_io_signature.h>
-#include <gr_null_source.h>
-#include <gr_null_sink.h>
-
-void qa_gr_hier_block2::test_make()
-{
-    gr_hier_block2_sptr src1(gr_make_hier_block2("test",
-						 gr_make_io_signature(1, 1, 1 * sizeof(int)),
-						 gr_make_io_signature(1, 1, 1 * sizeof(int))));
-
-    CPPUNIT_ASSERT(src1);
-    CPPUNIT_ASSERT_EQUAL(std::string("test"), src1->name());
-
-    CPPUNIT_ASSERT_EQUAL(1 * (int) sizeof(int),
-			 src1->input_signature()->sizeof_stream_item(0));
-
-    CPPUNIT_ASSERT_EQUAL(1, src1->input_signature()->min_streams());
-    CPPUNIT_ASSERT_EQUAL(1, src1->input_signature()->max_streams());
-
-
-    CPPUNIT_ASSERT_EQUAL(1 * (int) sizeof(int),
-			 src1->output_signature()->sizeof_stream_item(0));
-
-    CPPUNIT_ASSERT_EQUAL(1, src1->output_signature()->min_streams());
-    CPPUNIT_ASSERT_EQUAL(1, src1->output_signature()->max_streams());
-
-}
-
-
diff --git a/gnuradio-core/src/lib/runtime/qa_gr_hier_block2.h b/gnuradio-core/src/lib/runtime/qa_gr_hier_block2.h
deleted file mode 100644
index 653cd27251..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_gr_hier_block2.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_QA_GR_HIER_BLOCK2_H
-#define INCLUDED_QA_GR_HIER_BLOCK2_H
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-#include <stdexcept>
-
-class qa_gr_hier_block2 : public CppUnit::TestCase
-{
-    CPPUNIT_TEST_SUITE(qa_gr_hier_block2);
-
-    CPPUNIT_TEST(test_make);
-
-    CPPUNIT_TEST_SUITE_END();
-
-private:
-    void test_make();
-};
-
-#endif /* INCLUDED_QA_GR_HIER_BLOCK2_H */
diff --git a/gnuradio-core/src/lib/runtime/qa_gr_hier_block2_derived.cc b/gnuradio-core/src/lib/runtime/qa_gr_hier_block2_derived.cc
deleted file mode 100644
index 060c4e2447..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_gr_hier_block2_derived.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2008 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <qa_gr_hier_block2_derived.h>
-#include <gr_top_block.h>
-#include <gr_io_signature.h>
-#include <gr_null_source.h>
-#include <gr_null_sink.h>
-#include <gr_head.h>
-#include <gr_kludge_copy.h>
-
-// Declare a test C++ hierarchical block
-
-class gr_derived_block;
-typedef boost::shared_ptr<gr_derived_block> gr_derived_block_sptr;
-gr_derived_block_sptr gr_make_derived_block();
-
-class gr_derived_block : public gr_hier_block2
-{
-private:
-  friend gr_derived_block_sptr gr_make_derived_block();
-  gr_derived_block();
-
-public:
-  ~gr_derived_block();
-};
-
-
-gr_derived_block_sptr
-gr_make_derived_block()
-{
-  return gnuradio::get_initial_sptr(new gr_derived_block());
-}
-
-gr_derived_block::gr_derived_block()
-  : gr_hier_block2("gr_derived_block",
-		   gr_make_io_signature(1, 1, sizeof(int)), // Input signature
-		   gr_make_io_signature(1, 1, sizeof(int))) // Output signature
-{
-  gr_block_sptr copy(gr_make_kludge_copy(sizeof(int)));
-
-  connect(self(), 0, copy, 0);
-  connect(copy, 0, self(), 0);
-}
-
-gr_derived_block::~gr_derived_block()
-{
-}
-
-void qa_gr_hier_block2_derived::test_1()
-{
-  gr_top_block_sptr     tb(gr_make_top_block("test"));
-
-  gr_block_sptr         src(gr_make_null_source(sizeof(int)));
-  gr_block_sptr         head(gr_make_head(sizeof(int), 1000));
-  gr_derived_block_sptr blk(gr_make_derived_block());
-  gr_block_sptr         dst(gr_make_null_sink(sizeof(int)));
-
-  tb->connect(src,  0, head, 0);
-  tb->connect(head, 0, blk,  0);
-  tb->connect(blk,  0, dst,  0);
-
-  tb->run();
-}
diff --git a/gnuradio-core/src/lib/runtime/qa_gr_hier_block2_derived.h b/gnuradio-core/src/lib/runtime/qa_gr_hier_block2_derived.h
deleted file mode 100644
index 8e0a1880ce..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_gr_hier_block2_derived.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2008 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_QA_GR_HIER_BLOCK2_DERIVED_H
-#define INCLUDED_QA_GR_HIER_BLOCK2_DERIVED_H
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-#include <stdexcept>
-
-// Declare a QA test case
-class qa_gr_hier_block2_derived : public CppUnit::TestCase
-{
-  CPPUNIT_TEST_SUITE(qa_gr_hier_block2_derived);
-  CPPUNIT_TEST(test_1);
-  CPPUNIT_TEST_SUITE_END();
-
-private:
-  void test_1();
-};
-
-#endif /* INCLUDED_QA_GR_HIER_BLOCK2_DERIVED_H */
diff --git a/gnuradio-core/src/lib/runtime/qa_gr_top_block.cc b/gnuradio-core/src/lib/runtime/qa_gr_top_block.cc
deleted file mode 100644
index 1d3dafadf8..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_gr_top_block.cc
+++ /dev/null
@@ -1,285 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <qa_gr_top_block.h>
-#include <gr_top_block.h>
-#include <gr_head.h>
-#include <gr_nop.h>
-#include <gr_null_source.h>
-#include <gr_null_sink.h>
-#include <iostream>
-
-#define VERBOSE 0
-
-void qa_gr_top_block::t0()
-{
-  if (VERBOSE) std::cout << "qa_gr_top_block::t0()\n";
-
-  gr_top_block_sptr tb = gr_make_top_block("top");
-
-  CPPUNIT_ASSERT(tb);
-}
-
-void qa_gr_top_block::t1_run()
-{
-  if (VERBOSE) std::cout << "qa_gr_top_block::t1()\n";
-
-  gr_top_block_sptr tb = gr_make_top_block("top");
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr head = gr_make_head(sizeof(int), 100000);
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, dst, 0);
-  tb->run();
-}
-
-void qa_gr_top_block::t2_start_stop_wait()
-{
-  if (VERBOSE) std::cout << "qa_gr_top_block::t2()\n";
-
-  gr_top_block_sptr tb = gr_make_top_block("top");
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr head = gr_make_head(sizeof(int), 100000);
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, dst, 0);
-
-  tb->start();
-  tb->stop();
-  tb->wait();
-}
-
-void qa_gr_top_block::t3_lock_unlock()
-{
-  if (VERBOSE) std::cout << "qa_gr_top_block::t3()\n";
-
-  gr_top_block_sptr tb = gr_make_top_block("top");
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  tb->connect(src, 0, dst, 0);
-
-  tb->start();
-
-  tb->lock();
-  tb->unlock();
-
-  tb->stop();
-  tb->wait();
-}
-
-void qa_gr_top_block::t4_reconfigure()
-{
-  if (VERBOSE) std::cout << "qa_gr_top_block::t4()\n";
-
-  gr_top_block_sptr tb = gr_make_top_block("top");
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr head = gr_make_head(sizeof(int), 100000);
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  // Start infinite flowgraph
-  tb->connect(src, 0, dst, 0);
-  tb->start();
-
-  // Reconfigure with gr_head in the middle
-  tb->lock();
-  tb->disconnect(src, 0, dst, 0);
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, dst, 0);
-  tb->unlock();
-
-  // Wait for flowgraph to end on its own
-  tb->wait();
-}
-
-
-void qa_gr_top_block::t5_max_noutputs()
-{
-  if (VERBOSE) std::cout << "qa_gr_top_block::t5()\n";
-
-  gr_top_block_sptr tb = gr_make_top_block("top");
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr head = gr_make_head(sizeof(int), 100000);
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  // Start infinite flowgraph
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, dst, 0);
-  tb->start(100);
-  tb->wait();
-}
-
-void qa_gr_top_block::t6_reconfig_max_noutputs()
-{
-  if (VERBOSE) std::cout << "qa_gr_top_block::t6()\n";
-
-  gr_top_block_sptr tb = gr_make_top_block("top");
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr head = gr_make_head(sizeof(int), 100000);
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  // Start infinite flowgraph
-  tb->connect(src, 0, dst, 0);
-  tb->start(100);
-
-  // Reconfigure with gr_head in the middle
-  tb->lock();
-  tb->disconnect(src, 0, dst, 0);
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, dst, 0);
-  tb->set_max_noutput_items(1000);
-  head->set_max_noutput_items(500);
-  tb->unlock();
-
-  // Wait for flowgraph to end on its own
-  tb->wait();
-}
-
-void qa_gr_top_block::t7_max_noutputs_per_block()
-{
-  if (VERBOSE) std::cout << "qa_gr_top_block::t7()\n";
-
-  gr_top_block_sptr tb = gr_make_top_block("top");
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr head = gr_make_head(sizeof(int), 100000);
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  head->set_max_noutput_items(100);
-
-  // Start infinite flowgraph
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, dst, 0);
-  tb->start();
-  tb->wait();
-}
-
-void qa_gr_top_block::t8_reconfig_max_noutputs_per_block()
-{
-  if (VERBOSE) std::cout << "qa_gr_top_block::t8()\n";
-
-  gr_top_block_sptr tb = gr_make_top_block("top");
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr head = gr_make_head(sizeof(int), 100000);
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  head->set_max_noutput_items(99);
-
-  // Start infinite flowgraph
-  tb->connect(src, 0, dst, 0);
-  tb->start(201);
-
-  // Reconfigure with gr_head in the middle
-  tb->lock();
-  tb->disconnect(src, 0, dst, 0);
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, dst, 0);
-  tb->set_max_noutput_items(1023);
-  head->set_max_noutput_items(513);
-  tb->unlock();
-
-  // Wait for flowgraph to end on its own
-  tb->wait();
-}
-
-void qa_gr_top_block::t9_max_output_buffer()
-{
-  if (VERBOSE) std::cout << "qa_gr_top_block::t9()\n";
-
-  gr_top_block_sptr tb = gr_make_top_block("top");
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr head = gr_make_head(sizeof(int), 100000);
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  head->set_max_output_buffer(1024);
-
-  // Start infinite flowgraph
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, dst, 0);
-  tb->start();
-  tb->wait();
-}
-
-void qa_gr_top_block::t10_reconfig_max_output_buffer()
-{
-  if (VERBOSE) std::cout << "qa_gr_top_block::t10()\n";
-
-  gr_top_block_sptr tb = gr_make_top_block("top");
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_block_sptr head = gr_make_head(sizeof(int), 100000);
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  head->set_max_output_buffer(1000);
-
-  // Start infinite flowgraph
-  tb->connect(src, 0, dst, 0);
-  tb->start(201);
-
-  // Reconfigure with gr_head in the middle
-  tb->lock();
-  gr_block_sptr nop = gr_make_nop(sizeof(int));
-  nop->set_max_output_buffer(4000);
-  tb->disconnect(src, 0, dst, 0);
-  tb->connect(src, 0, head, 0);
-  tb->connect(head, 0, nop, 0);
-  tb->connect(nop, 0, dst, 0);
-  tb->unlock();
-
-  // Wait for flowgraph to end on its own
-  tb->wait();
-}
-
-void qa_gr_top_block::t11_set_block_affinity()
-{
-  gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(float)));
-  gr_block_sptr snk (gr_make_null_sink(sizeof(float)));
-
-  std::vector<unsigned int> set(1, 0), ret;
-  src->set_processor_affinity(set);
-
-  tb->connect(src, 0, snk, 0);
-  tb->start();
-  tb->stop();
-  tb->wait();
-
-  ret = src->processor_affinity();
-
-  // We only set the core affinity to 0 because we always know at
-  // least one thread core exists to use.
-  CPPUNIT_ASSERT_EQUAL(set[0], ret[0]);
-}
diff --git a/gnuradio-core/src/lib/runtime/qa_gr_top_block.h b/gnuradio-core/src/lib/runtime/qa_gr_top_block.h
deleted file mode 100644
index 634eeab1f8..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_gr_top_block.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_QA_GR_TOP_BLOCK_H
-#define INCLUDED_QA_GR_TOP_BLOCK_H
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-#include <stdexcept>
-
-class qa_gr_top_block : public CppUnit::TestCase
-{
-  CPPUNIT_TEST_SUITE(qa_gr_top_block);
-
-  CPPUNIT_TEST(t0);
-  CPPUNIT_TEST(t1_run);
-  CPPUNIT_TEST(t2_start_stop_wait);
-  CPPUNIT_TEST(t3_lock_unlock);
-  CPPUNIT_TEST(t4_reconfigure);  // triggers 'join never returns' bug
-  CPPUNIT_TEST(t5_max_noutputs);
-  CPPUNIT_TEST(t6_reconfig_max_noutputs);
-  CPPUNIT_TEST(t7_max_noutputs_per_block);
-  CPPUNIT_TEST(t8_reconfig_max_noutputs_per_block);
-  CPPUNIT_TEST(t9_max_output_buffer);
-  CPPUNIT_TEST(t10_reconfig_max_output_buffer);
-  CPPUNIT_TEST(t11_set_block_affinity);
-
-  CPPUNIT_TEST_SUITE_END();
-
-private:
-
-  void t0();
-  void t1_run();
-  void t2_start_stop_wait();
-  void t3_lock_unlock();
-  void t4_reconfigure();
-  void t5_max_noutputs();
-  void t6_reconfig_max_noutputs();
-  void t7_max_noutputs_per_block();
-  void t8_reconfig_max_noutputs_per_block();
-  void t9_max_output_buffer();
-  void t10_reconfig_max_output_buffer();
-  void t11_set_block_affinity();
-
-};
-
-#endif /* INCLUDED_QA_GR_TOP_BLOCK_H */
diff --git a/gnuradio-core/src/lib/runtime/qa_runtime.cc b/gnuradio-core/src/lib/runtime/qa_runtime.cc
index 62c95ef5c4..f02fbd7d66 100644
--- a/gnuradio-core/src/lib/runtime/qa_runtime.cc
+++ b/gnuradio-core/src/lib/runtime/qa_runtime.cc
@@ -32,14 +32,8 @@
 #include <qa_runtime.h>
 #include <qa_gr_vmcircbuf.h>
 #include <qa_gr_io_signature.h>
-#include <qa_gr_block.h>
-#include <qa_gr_flowgraph.h>
 #include <qa_gr_logger.h>
-#include <qa_gr_top_block.h>
-#include <qa_gr_hier_block2.h>
-#include <qa_gr_hier_block2_derived.h>
 #include <qa_gr_buffer.h>
-#include <qa_block_tags.h>
 #include <qa_set_msg_handler.h>
 
 CppUnit::TestSuite *
diff --git a/gnuradio-core/src/lib/runtime/qa_set_msg_handler.cc b/gnuradio-core/src/lib/runtime/qa_set_msg_handler.cc
deleted file mode 100644
index ac06a3f8bc..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_set_msg_handler.cc
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007,2011 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <qa_set_msg_handler.h>
-#include <gr_top_block.h>
-#include <gr_head.h>
-#include <gr_null_source.h>
-#include <gr_null_sink.h>
-#include <gr_nop.h>
-#include <gruel/msg_passing.h>
-#include <iostream>
-#include <boost/thread/thread.hpp>
-
-
-#define VERBOSE 0
-
-/*
- * The gr_nop block has been instrumented so that it counts
- * the number of messages sent to it.  We use this feature
- * to confirm that gr_nop's call to set_msg_handler is working
- * correctly.
- */
-
-void qa_set_msg_handler::t0()
-{
-  static const int NMSGS = 10;
-
-  if (VERBOSE) std::cout << "qa_set_msg_handler::t0()\n";
-
-  gr_top_block_sptr tb = gr_make_top_block("top");
-
-  gr_block_sptr src = gr_make_null_source(sizeof(int));
-  gr_nop_sptr nop = gr_make_nop(sizeof(int));
-  gr_block_sptr dst = gr_make_null_sink(sizeof(int));
-
-  tb->connect(src, 0, nop, 0);
-  tb->connect(nop, 0, dst, 0);
-
-  // Must start graph before sending messages
-  tb->start();
-
-  // Send them...
-  pmt::pmt_t port(pmt::intern("port"));
-  for (int i = 0; i < NMSGS; i++){
-    send(nop, port, pmt::mp(pmt::mp("example-msg"), pmt::mp(i)));
-  }
-
-  // Give the messages a chance to be processed
-  boost::this_thread::sleep(boost::posix_time::milliseconds(100));
-
-  tb->stop();
-  tb->wait();
-
-  // Confirm that the nop block received the right number of messages.
-  CPPUNIT_ASSERT_EQUAL(NMSGS, nop->nmsgs_received());
-}
diff --git a/gnuradio-core/src/lib/runtime/qa_set_msg_handler.h b/gnuradio-core/src/lib/runtime/qa_set_msg_handler.h
deleted file mode 100644
index 60277a12cc..0000000000
--- a/gnuradio-core/src/lib/runtime/qa_set_msg_handler.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2007,2011 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef INCLUDED_QA_SET_MSG_HANDLER_H
-#define INCLUDED_QA_SET_MSG_HANDLER_H
-
-#include <cppunit/extensions/HelperMacros.h>
-#include <cppunit/TestCase.h>
-#include <stdexcept>
-
-class qa_set_msg_handler : public CppUnit::TestCase
-{
-  CPPUNIT_TEST_SUITE(qa_set_msg_handler);
-
-  CPPUNIT_TEST(t0);
-
-  CPPUNIT_TEST_SUITE_END();
-
-private:
-
-  void t0();
-};
-
-#endif /* INCLUDED_QA_SET_MSG_HANDLER_H */
diff --git a/gnuradio-core/src/lib/runtime/test_shared_block_ptr.cc b/gnuradio-core/src/lib/runtime/test_shared_block_ptr.cc
index bb4e863222..0a391c1354 100644
--- a/gnuradio-core/src/lib/runtime/test_shared_block_ptr.cc
+++ b/gnuradio-core/src/lib/runtime/test_shared_block_ptr.cc
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2004 Free Software Foundation, Inc.
+ * Copyright 2004,2013 Free Software Foundation, Inc.
  *
  * This file is part of GNU Radio
  *
@@ -21,16 +21,16 @@
  */
 
 #include <gr_shared_block_sptr.h>
-#include <gr_vector_source_i.h>
+#include <blocks/vector_source_i.h>
 
 gr_block_sptr
-foo (gr_vector_source_i_sptr s)
+foo (gr::blocks::vector_source_i::sptr s)
 {
   return gr_block_sptr (s);
 }
 
-typedef gr_shared_block_sptr<gr_vector_source_i> gr_vector_source_i_ptrX;
-//typedef boost::shared_ptr<gr_vector_source_i> gr_vector_source_i_ptrX;
+typedef gr_shared_block_sptr<gr::blocks::vector_source_i> gr_vector_source_i_ptrX;
+//typedef boost::shared_ptr<gr::blocks::vector_source_i> gr_vector_source_i_ptrX;
 
 gr_vector_source_i_ptrX
 bar (gr_vector_source_i *s)
diff --git a/gnuradio-core/src/lib/swig/CMakeLists.txt b/gnuradio-core/src/lib/swig/CMakeLists.txt
index 2132e2ca09..a397339eeb 100644
--- a/gnuradio-core/src/lib/swig/CMakeLists.txt
+++ b/gnuradio-core/src/lib/swig/CMakeLists.txt
@@ -58,9 +58,9 @@ link_directories(${Boost_LIBRARY_DIRS})
 # ----------------------------------------------------------------
 
 set(GR_SWIG_TARGET_DEPS gnuradio_core_generated_sources
-  general_generated gengen_generated filter_generated pmt_swig)
+  general_generated filter_generated pmt_swig)
 
-foreach(what runtime general gengen io)
+foreach(what runtime general io)
     SET(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/${what}_swig_doc.i)
     SET(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../${what} ${CMAKE_CURRENT_BINARY_DIR}/../${what})
     GR_SWIG_MAKE(gnuradio_core_${what} gnuradio_core_${what}.i)
diff --git a/gnuradio-core/src/lib/swig/gnuradio_core.py b/gnuradio-core/src/lib/swig/gnuradio_core.py
index 1fd558a11b..98e415f31a 100644
--- a/gnuradio-core/src/lib/swig/gnuradio_core.py
+++ b/gnuradio-core/src/lib/swig/gnuradio_core.py
@@ -22,5 +22,4 @@
 
 from gnuradio_core_runtime import *
 from gnuradio_core_general import *
-from gnuradio_core_gengen import *
 from gnuradio_core_io import *
diff --git a/gnuradio-core/src/lib/swig/gnuradio_core_gengen.i b/gnuradio-core/src/lib/swig/gnuradio_core_gengen.i
deleted file mode 100644
index b90a5bab3e..0000000000
--- a/gnuradio-core/src/lib/swig/gnuradio_core_gengen.i
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2006,2009,2010 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-%include "gengen_swig_doc.i"
-
-#ifndef SWIGIMPORTED
-%module(directors="1") gnuradio_core_gengen
-#endif
-
- //%feature("autodoc", "1");		// generate python docstrings
-
-%include "gnuradio.i"				// the common stuff
-
-%include "gengen.i"
diff --git a/gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py b/gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py
index dfa67feffe..8597ca6497 100644
--- a/gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py
+++ b/gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py
@@ -206,7 +206,7 @@ class GrDataPlotterC(GrDataPlotParent):
         return snk
 
     def get_vecsource(self):
-        return gr.vector_source_c([])
+        return blocks.vector_source_c([])
 
     def get_npts(self):
         self._npts = self.snk.nsamps()
@@ -237,7 +237,7 @@ class GrDataPlotterF(GrDataPlotParent):
         return snk
     
     def get_vecsource(self):
-        return gr.vector_source_f([])
+        return blocks.vector_source_f([])
 
     def get_npts(self):
         self._npts = self.snk.nsamps()
@@ -265,7 +265,7 @@ class GrDataPlotterConst(GrDataPlotParent):
         return snk
 
     def get_vecsource(self):
-        return gr.vector_source_c([])
+        return blocks.vector_source_c([])
 
     def get_npts(self):
         self._npts = self.snk.nsamps()
@@ -304,7 +304,7 @@ class GrDataPlotterPsdC(GrDataPlotParent):
         return snk
 
     def get_vecsource(self):
-        return gr.vector_source_c([])
+        return blocks.vector_source_c([])
 
     def get_npts(self):
         self._npts = self.snk.fft_size()
@@ -337,7 +337,7 @@ class GrDataPlotterPsdF(GrDataPlotParent):
         return snk
 
     def get_vecsource(self):
-        return gr.vector_source_f([])
+        return blocks.vector_source_f([])
 
     def get_npts(self):
         self._npts = self.snk.fft_size()
@@ -367,7 +367,7 @@ class GrTimeRasterF(GrDataPlotParent):
         return snk
 
     def get_vecsource(self):
-        return gr.vector_source_f([])
+        return blocks.vector_source_f([])
 
     def get_npts(self):
         self._npts = self.snk.num_cols()
@@ -396,7 +396,7 @@ class GrTimeRasterB(GrDataPlotParent):
         return snk
 
     def get_vecsource(self):
-        return gr.vector_source_b([])
+        return blocks.vector_source_b([])
 
     def get_npts(self):
         self._npts = self.snk.num_cols()
diff --git a/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py b/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py
deleted file mode 100755
index 6de5d5fc9f..0000000000
--- a/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding.py
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2012 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-# 
-# This program tests mixed python and c++ ctrlport exports in a single app
-#
-
-import Ice
-import sys, time, random, numpy
-from gnuradio import gr, gr_unittest
-
-from gnuradio.ctrlport import GNURadio
-from gnuradio import ctrlport
-import os
-
-def get1():
-    return "success"
-
-def get2():
-    return "failure"
-
-class inc_class:
-    def __init__(self):
-        self.val = 1
-    def pp(self):
-        self.val = self.val+1
-        return self.val
-
-get3 = inc_class()
-
-def get4():
-    random.seed(0)
-    rv = random.random()
-    return rv
-
-def get5():
-    numpy.random.seed(0)
-    samp_t = numpy.random.randn(24)+1j*numpy.random.randn(24);
-    samp_f = numpy.fft.fft(samp_t);
-    log_pow_f = 20*numpy.log10(numpy.abs(samp_f))
-    rv = list(log_pow_f)
-    return rv;
-
-def get6():
-    numpy.random.seed(0)
-    samp_t = numpy.random.randn(1024)+1j*numpy.random.randn(1024);
-    rv = list(samp_t)
-    return rv;
-
-class test_cpp_py_binding(gr_unittest.TestCase):
-
-    def setUp(self):
-        self.tb = gr.top_block()
-        os.environ['GR_CONF_CONTROLPORT_ON'] = 'True'
-
-    def tearDown(self):
-        self.tb = None
-
-    def test_001(self):
-        v1 = gr.RPC_get_string("pyland", "v1", "unit_1_string",
-                               "Python Exported String", "", "", "",
-                               gr.DISPNULL)
-        v1.activate(get1)
-
-        v2 = gr.RPC_get_string("pyland", "v2", "unit_2_string",
-                               "Python Exported String", "", "", "",
-                               gr.DISPNULL)
-        v2.activate(get2)
-
-        v3 = gr.RPC_get_int("pyland", "v3", "unit_3_int",
-                            "Python Exported Int", 0, 100, 1,
-                            gr.DISPNULL)
-        v3.activate(get3.pp)
-
-        v4 = gr.RPC_get_double("pyland", "time", "unit_4_time_double",
-                               "Python Exported Double", 0, 1000, 1,
-                               gr.DISPNULL)
-        v4.activate(get4)
-
-        v5 = gr.RPC_get_vector_float("pyland", "fvec", "unit_5_float_vector",
-                                     "Python Exported Float Vector", [], [], [],
-                                     gr.DISPTIME | gr.DISPOPTCPLX)
-        v5.activate(get5)
-
-        v6 = gr.RPC_get_vector_gr_complex("pyland", "cvec", "unit_6_gr_complex_vector",
-                                          "Python Exported Complex Vector", [], [], [],
-                                          gr.DISPXY | gr.DISPOPTSCATTER)
-        v6.activate(get6)
-
-        # print some variables locally
-        val = get1()
-        rval = v1.get()
-        self.assertEqual(val, rval)
-
-        val = get2()
-        rval = v2.get()
-        self.assertEqual(val, rval)
-
-        val = get3.pp()
-        rval = v3.get()
-        self.assertEqual(val+1, rval)
-
-        val = get4()
-        rval = v4.get()
-        self.assertEqual(val, rval)
-
-        val = get5()
-        rval = v5.get()
-        self.assertComplexTuplesAlmostEqual(val, rval, 5)
-        
-        val = get6()
-        rval = v6.get()
-        self.assertComplexTuplesAlmostEqual(val, rval, 5)
-
-    def test_002(self):
-        data = range(1,9)
-
-        self.src = gr.vector_source_c(data)
-        self.p1 = gr.ctrlport_probe_c("aaa","C++ exported variable")
-        self.p2 = gr.ctrlport_probe_c("bbb","C++ exported variable")
-        probe_name = self.p2.alias()
-
-        self.tb.connect(self.src, self.p1)
-        self.tb.connect(self.src, self.p2)
-        self.tb.start()
-
-        # Probes return complex values as list of floats with re, im
-        # Imaginary parts of this data set are 0.
-        expected_result = [1, 0, 2, 0, 3, 0, 4, 0,
-                           5, 0, 6, 0, 7, 0, 8, 0]
-
-        # Make sure we have time for flowgraph to run
-        time.sleep(0.1)
-
-        # Get available endpoint
-        ep = gr.rpcmanager_get().endpoints()[0]
-
-        # Initialize a simple Ice client from endpoint
-        ic = Ice.initialize(sys.argv)
-        base = ic.stringToProxy(ep)
-        radio = GNURadio.ControlPortPrx.checkedCast(base)
-
-        # Get all exported knobs
-        ret = radio.get([probe_name + "::bbb"])
-        for name in ret.keys():
-            result = ret[name].value
-            self.assertEqual(result, expected_result)
-
-        self.tb.stop()
-
-if __name__ == '__main__':
-    gr_unittest.run(test_cpp_py_binding, "test_cpp_py_binding.xml")
-
diff --git a/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding_set.py b/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding_set.py
deleted file mode 100755
index 4ca120099c..0000000000
--- a/gnuradio-core/src/python/gnuradio/ctrlport/qa_cpp_py_binding_set.py
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2012 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-# 
-# This program tests mixed python and c++ GRCP sets in a single app
-#
-
-import Ice
-import sys, time, random, numpy
-from gnuradio import gr, gr_unittest
-
-from gnuradio.ctrlport import GNURadio
-from gnuradio import ctrlport
-import os
-
-class inc_class:
-    def __init__(self,val):
-        self.val = val;
-
-    def _get(self):
-        #print "returning get (val = %s)"%(str(self.val));
-        return self.val;
-
-    def _set(self,val):
-        #print "updating val to %s"%(str(val));
-        self.val = val;
-        return;
-
-getset1 = inc_class(10);
-getset2 = inc_class(100.0);
-getset3 = inc_class("test");
-
-class test_cpp_py_binding_set(gr_unittest.TestCase):
-    def setUp(self):
-        self.tb = gr.top_block()
-        os.environ['GR_CONF_CONTROLPORT_ON'] = 'True'
-
-    def tearDown(self):
-        self.tb = None
-
-    def test_001(self):
-
-        g1 = gr.RPC_get_int("pyland", "v1", "unit_1_int",
-                                  "Python Exported Int", 0, 100, 10,
-                                  gr.DISPNULL)
-        g1.activate(getset1._get)
-        s1 = gr.RPC_get_int("pyland", "v1", "unit_1_int",
-                                  "Python Exported Int", 0, 100, 10,
-                                  gr.DISPNULL)
-        s1.activate(getset1._set)
-        time.sleep(0.01)
-
-        # test int variables
-        getset1._set(21)
-        val = getset1._get()
-        rval = g1.get()
-        self.assertEqual(val, rval)
-
-        g2 = gr.RPC_get_float("pyland", "v2", "unit_2_float",
-                              "Python Exported Float", -100, 1000.0, 100.0,
-                              gr.DISPNULL)
-        g2.activate(getset2._get)
-        s2 = gr.RPC_get_float("pyland", "v2", "unit_2_float",
-                              "Python Exported Float", -100, 1000.0, 100.0,
-                              gr.DISPNULL)
-        s2.activate(getset2._set)
-        time.sleep(0.01)
-
-        # test float variables
-        getset2._set(123.456)
-        val = getset2._get()
-        rval = g2.get()
-        self.assertAlmostEqual(val, rval, 4)
-
-        g3 = gr.RPC_get_string("pyland", "v3", "unit_3_string",
-                               "Python Exported String", "", "", "",
-                               gr.DISPNULL)
-        g3.activate(getset3._get)
-        s3 = gr.RPC_get_string("pyland", "v3", "unit_3_string",
-                               "Python Exported String", "", "", "",
-                               gr.DISPNULL)
-        s3.activate(getset3._set)
-        time.sleep(0.01)
-
-        # test string variables
-        getset3._set("third test")
-        val = getset3._get()
-        rval = g3.get()
-        self.assertEqual(val, rval)
-
-
-    def test_002(self):
-        data = range(1, 10)
-
-        self.src = gr.vector_source_c(data, True)
-        self.p = gr.nop(gr.sizeof_gr_complex)
-        self.p.set_ctrlport_test(0);
-        probe_info = self.p.alias()
-
-        self.tb.connect(self.src, self.p)
-
-        # Get available endpoint
-        ep = gr.rpcmanager_get().endpoints()[0]
-
-        # Initialize a simple Ice client from endpoint
-        ic = Ice.initialize(sys.argv)
-        base = ic.stringToProxy(ep)
-        radio = GNURadio.ControlPortPrx.checkedCast(base)
-
-        self.tb.start()
-
-        # Make sure we have time for flowgraph to run
-        time.sleep(0.1)
-
-        # Get all exported knobs
-        key_name_test = probe_info+"::test"
-        ret = radio.get([key_name_test,])
-
-        ret[key_name_test].value = 10
-        radio.set({key_name_test: ret[key_name_test]})
-
-        ret = radio.get([])
-        result_test = ret[key_name_test].value
-        self.assertEqual(result_test, 10)
-
-        self.tb.stop()
-        self.tb.wait()
-
-if __name__ == '__main__':
-    gr_unittest.run(test_cpp_py_binding_set, "test_cpp_py_binding_set.xml")
-
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_block_gateway.py b/gnuradio-core/src/python/gnuradio/gr/qa_block_gateway.py
deleted file mode 100644
index 2c8cba5439..0000000000
--- a/gnuradio-core/src/python/gnuradio/gr/qa_block_gateway.py
+++ /dev/null
@@ -1,255 +0,0 @@
-#
-# Copyright 2011-2012 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gr_unittest
-import pmt
-import numpy
-
-class add_2_f32_1_f32(gr.sync_block):
-    def __init__(self):
-        gr.sync_block.__init__(
-            self,
-            name = "add 2 f32",
-            in_sig = [numpy.float32, numpy.float32],
-            out_sig = [numpy.float32],
-        )
-
-    def work(self, input_items, output_items):
-        output_items[0][:] = input_items[0] + input_items[1]
-        return len(output_items[0])
-
-class add_2_fc32_1_fc32(gr.sync_block):
-    def __init__(self):
-        gr.sync_block.__init__(
-            self,
-            name = "add 2 fc32",
-            in_sig = [numpy.complex64, numpy.complex64],
-            out_sig = [numpy.complex64],
-        )
-
-    def work(self, input_items, output_items):
-        output_items[0][:] = input_items[0] + input_items[1]
-        return len(output_items[0])
-
-class convolve(gr.sync_block):
-    """
-    A demonstration using block history to properly perform a convolution.
-    """
-    def __init__(self):
-        gr.sync_block.__init__(
-            self,
-            name = "convolve",
-            in_sig = [numpy.float32],
-            out_sig = [numpy.float32]
-        )
-        self._taps = [1, 0, 0, 0]
-        self.set_history(len(self._taps))
-
-    def work(self, input_items, output_items):
-        output_items[0][:] = numpy.convolve(input_items[0], self._taps, mode='valid')
-        return len(output_items[0])
-
-class decim2x(gr.decim_block):
-    def __init__(self):
-        gr.decim_block.__init__(
-            self,
-            name = "decim2x",
-            in_sig = [numpy.float32],
-            out_sig = [numpy.float32],
-            decim = 2
-        )
-
-    def work(self, input_items, output_items):
-        output_items[0][:] = input_items[0][::2]
-        return len(output_items[0])
-
-class interp2x(gr.interp_block):
-    def __init__(self):
-        gr.interp_block.__init__(
-            self,
-            name = "interp2x",
-            in_sig = [numpy.float32],
-            out_sig = [numpy.float32],
-            interp = 2
-        )
-
-    def work(self, input_items, output_items):
-        output_items[0][1::2] = input_items[0]
-        output_items[0][::2] = input_items[0]
-        return len(output_items[0])
-
-class tag_source(gr.sync_block):
-    def __init__(self):
-        gr.sync_block.__init__(
-            self,
-            name = "tag source",
-            in_sig = None,
-            out_sig = [numpy.float32],
-        )
-
-    def work(self, input_items, output_items):
-        num_output_items = len(output_items[0])
-
-        #put code here to fill the output items...
-
-        #make a new tag on the middle element every time work is called
-        count = self.nitems_written(0) + num_output_items/2
-        key = pmt.string_to_symbol("example_key")
-        value = pmt.string_to_symbol("example_value")
-        self.add_item_tag(0, count, key, value)
-
-        return num_output_items
-
-class tag_sink(gr.sync_block):
-    def __init__(self):
-        gr.sync_block.__init__(
-            self,
-            name = "tag sink",
-            in_sig = [numpy.float32],
-            out_sig = None,
-        )
-        self.key = None
-
-    def work(self, input_items, output_items):
-        num_input_items = len(input_items[0])
-
-        #put code here to process the input items...
-
-        #print all the tags received in this work call
-        nread = self.nitems_read(0)
-        tags = self.get_tags_in_range(0, nread, nread+num_input_items)
-        for tag in tags:
-            #print tag.offset
-            #print pmt.symbol_to_string(tag.key)
-            #print pmt.symbol_to_string(tag.value)
-            self.key = pmt.symbol_to_string(tag.key)
-
-        return num_input_items
-
-class fc32_to_f32_2(gr.sync_block):
-    def __init__(self):
-        gr.sync_block.__init__(
-            self,
-            name = "fc32_to_f32_2",
-            in_sig = [numpy.complex64],
-            out_sig = [(numpy.float32, 2)],
-        )
-
-    def work(self, input_items, output_items):
-        output_items[0][::,0] = numpy.real(input_items[0])
-        output_items[0][::,1] = numpy.imag(input_items[0])
-        return len(output_items[0])
-
-class vector_to_stream(gr.interp_block):
-    def __init__(self, itemsize, nitems_per_block):
-        gr.interp_block.__init__(
-            self,
-            name = "vector_to_stream",
-            in_sig = [(itemsize, nitems_per_block)],
-            out_sig = [itemsize],
-            interp = nitems_per_block
-        )
-        self.block_size = nitems_per_block
-
-    def work(self, input_items, output_items):
-        n = 0
-        for i in xrange(len(input_items[0])):
-            for j in xrange(self.block_size):
-                output_items[0][n] = input_items[0][i][j]
-                n += 1
-      
-        return len(output_items[0])
-
-class test_block_gateway(gr_unittest.TestCase):
-
-    def test_add_f32(self):
-        tb = gr.top_block()
-        src0 = gr.vector_source_f([1, 3, 5, 7, 9], False)
-        src1 = gr.vector_source_f([0, 2, 4, 6, 8], False)
-        adder = add_2_f32_1_f32()
-        sink = gr.vector_sink_f()
-        tb.connect((src0, 0), (adder, 0))
-        tb.connect((src1, 0), (adder, 1))
-        tb.connect(adder, sink)
-        tb.run()
-        self.assertEqual(sink.data(), (1, 5, 9, 13, 17))
-
-    def test_add_fc32(self):
-        tb = gr.top_block()
-        src0 = gr.vector_source_c([1, 3j, 5, 7j, 9], False)
-        src1 = gr.vector_source_c([0, 2j, 4, 6j, 8], False)
-        adder = add_2_fc32_1_fc32()
-        sink = gr.vector_sink_c()
-        tb.connect((src0, 0), (adder, 0))
-        tb.connect((src1, 0), (adder, 1))
-        tb.connect(adder, sink)
-        tb.run()
-        self.assertEqual(sink.data(), (1, 5j, 9, 13j, 17))
-
-    def test_convolve(self):
-        tb = gr.top_block()
-        src = gr.vector_source_f([1, 2, 3, 4, 5, 6, 7, 8], False)
-        cv = convolve()
-        sink = gr.vector_sink_f()
-        tb.connect(src, cv, sink)
-        tb.run()
-        self.assertEqual(sink.data(), (1, 2, 3, 4, 5, 6, 7, 8))
-
-    def test_decim2x(self):
-        tb = gr.top_block()
-        src = gr.vector_source_f([1, 2, 3, 4, 5, 6, 7, 8], False)
-        d2x = decim2x()
-        sink = gr.vector_sink_f()
-        tb.connect(src, d2x, sink)
-        tb.run()
-        self.assertEqual(sink.data(), (1, 3, 5, 7))
-
-    def test_interp2x(self):
-        tb = gr.top_block()
-        src = gr.vector_source_f([1, 3, 5, 7, 9], False)
-        i2x = interp2x()
-        sink = gr.vector_sink_f()
-        tb.connect(src, i2x, sink)
-        tb.run()
-        self.assertEqual(sink.data(), (1, 1, 3, 3, 5, 5, 7, 7, 9, 9))
-
-    def test_tags(self):
-        src = tag_source()
-        sink = tag_sink()
-        head = gr.head(gr.sizeof_float, 50000) #should be enough items to get a tag through
-        tb = gr.top_block()
-        tb.connect(src, head, sink)
-        tb.run()
-        self.assertEqual(sink.key, "example_key")
-
-    def test_fc32_to_f32_2(self):
-        tb = gr.top_block()
-        src = gr.vector_source_c([1+2j, 3+4j, 5+6j, 7+8j, 9+10j], False)
-        convert = fc32_to_f32_2()
-        v2s = vector_to_stream(numpy.float32, 2)
-        sink = gr.vector_sink_f()
-        tb.connect(src, convert, v2s, sink)
-        tb.run()
-        self.assertEqual(sink.data(), (1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
-
-if __name__ == '__main__':
-    gr_unittest.run(test_block_gateway, "test_block_gateway.xml")
-
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_copy.py b/gnuradio-core/src/python/gnuradio/gr/qa_copy.py
deleted file mode 100755
index 68c8e451f3..0000000000
--- a/gnuradio-core/src/python/gnuradio/gr/qa_copy.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2009,2010 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gr_unittest
-
-class test_copy(gr_unittest.TestCase):
-
-    def setUp (self):
-        self.tb = gr.top_block ()
-
-    def tearDown (self):
-        self.tb = None
-
-    def test_copy (self):
-        src_data = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
-        expected_result = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
-        src = gr.vector_source_b(src_data)
-        op = gr.copy(gr.sizeof_char)
-        dst = gr.vector_sink_b()
-        self.tb.connect(src, op, dst)
-        self.tb.run()
-        dst_data = dst.data()
-        self.assertEqual(expected_result, dst_data)
-
-    def test_copy_drop (self):
-        src_data = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
-        expected_result = ()
-        src = gr.vector_source_b(src_data)
-        op = gr.copy(gr.sizeof_char)
-	op.set_enabled(False)
-        dst = gr.vector_sink_b()
-        self.tb.connect(src, op, dst)
-        self.tb.run()
-        dst_data = dst.data()
-        self.assertEqual(expected_result, dst_data)
-
-
-if __name__ == '__main__':
-    gr_unittest.run(test_copy, "test_copy.xml")
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_endian_swap.py b/gnuradio-core/src/python/gnuradio/gr/qa_endian_swap.py
deleted file mode 100644
index 4d2555cc4d..0000000000
--- a/gnuradio-core/src/python/gnuradio/gr/qa_endian_swap.py
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2011,2012 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gr_unittest
-import ctypes
-
-class test_endian_swap (gr_unittest.TestCase):
-
-    def setUp (self):
-        self.tb = gr.top_block ()
-
-    def tearDown (self):
-        self.tb = None
-
-    def test_001(self):
-
-        src_data = [1,2,3,4]
-        expected_result = [256, 512, 768, 1024];
-
-        src = gr.vector_source_s(src_data)
-        op = gr.endian_swap(2)
-        dst = gr.vector_sink_s()
-
-        self.tb.connect(src, op, dst)
-        self.tb.run()
-        result_data = list(dst.data())
-
-        self.assertEqual(expected_result, result_data)
-
-    def test_002(self):
-
-        src_data = [1,2,3,4]
-        expected_result = [16777216, 33554432, 50331648, 67108864];
-
-        src = gr.vector_source_i(src_data)
-        op = gr.endian_swap(4)
-        dst = gr.vector_sink_i()
-
-        self.tb.connect(src, op, dst)
-        self.tb.run()
-        result_data = list(dst.data())
-    
-        self.assertEqual(expected_result, result_data)
-
-if __name__ == '__main__':
-    gr_unittest.run(test_endian_swap, "test_endian_swap.xml")
-
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_head.py b/gnuradio-core/src/python/gnuradio/gr/qa_head.py
deleted file mode 100755
index d7cb354dcb..0000000000
--- a/gnuradio-core/src/python/gnuradio/gr/qa_head.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2004,2007,2010 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gr_unittest
-
-class test_head (gr_unittest.TestCase):
-
-    def setUp (self):
-        self.tb = gr.top_block ()
-
-    def tearDown (self):
-        self.tb = None
-
-    def test_head (self):
-        src_data = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
-        expected_result = (1, 2, 3, 4)
-        src1 = gr.vector_source_i (src_data)
-        op = gr.head (gr.sizeof_int, 4)
-        dst1 = gr.vector_sink_i ()
-        self.tb.connect (src1, op)
-        self.tb.connect (op, dst1)
-        self.tb.run ()
-        dst_data = dst1.data ()
-        self.assertEqual (expected_result, dst_data)
-
-
-if __name__ == '__main__':
-    gr_unittest.run(test_head, "test_head.xml")
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py b/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
deleted file mode 100755
index 9ba48599af..0000000000
--- a/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
+++ /dev/null
@@ -1,397 +0,0 @@
-#!/usr/bin/env python
-
-from gnuradio import gr, gr_unittest
-import numpy
-
-class add_ff(gr.sync_block):
-    def __init__(self):
-        gr.sync_block.__init__(
-            self,
-            name = "add_ff",
-            in_sig = [numpy.float32, numpy.float32],
-            out_sig = [numpy.float32],
-        )
-
-    def work(self, input_items, output_items):
-        output_items[0][:] = input_items[0] + input_items[1]
-        return len(output_items[0])
-
-class multiply_const_ff(gr.sync_block):
-    def __init__(self, k):
-        gr.sync_block.__init__(
-            self,
-            name = "multiply_ff",
-            in_sig = [numpy.float32],
-            out_sig = [numpy.float32],
-        )
-        self.k = k
-
-    def work(self, input_items, output_items):
-        output_items[0][:] = map(lambda x: self.k*x, input_items[0])
-        return len(output_items[0])
-
-class test_hier_block2(gr_unittest.TestCase):
-
-    def setUp(self):
-	pass
-
-    def tearDown(self):
-    	pass
-
-    def test_001_make(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	self.assertEqual("test_block", hblock.name())
-	self.assertEqual(1, hblock.input_signature().max_streams())
-	self.assertEqual(1, hblock.output_signature().min_streams())
-	self.assertEqual(1, hblock.output_signature().max_streams())
-	self.assertEqual(gr.sizeof_int, hblock.output_signature().sizeof_stream_item(0))
-
-    def test_002_connect_input(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-	hblock.connect(hblock, nop1)
-
-    def test_004_connect_output(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-	hblock.connect(nop1, hblock)
-
-    def test_005_connect_output_in_use(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-	nop2 = gr.nop(gr.sizeof_int)
-	hblock.connect(nop1, hblock)
-	self.assertRaises(ValueError,
-	    lambda: hblock.connect(nop2, hblock))
-
-    def test_006_connect_invalid_src_port_neg(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-	self.assertRaises(ValueError,
-	    lambda: hblock.connect((hblock, -1), nop1))
-
-    def test_005_connect_invalid_src_port_exceeds(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-	self.assertRaises(ValueError,
-	    lambda: hblock.connect((hblock, 1), nop1))
-
-    def test_007_connect_invalid_dst_port_neg(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-	nop2 = gr.nop(gr.sizeof_int)
-	self.assertRaises(ValueError,
-	    lambda: hblock.connect(nop1, (nop2, -1)))
-
-    def test_008_connect_invalid_dst_port_exceeds(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.null_sink(gr.sizeof_int)
-	nop2 = gr.null_sink(gr.sizeof_int)
-	self.assertRaises(ValueError,
-	    lambda: hblock.connect(nop1, (nop2, 1)))
-
-    def test_009_check_topology(self):
-	hblock = gr.top_block("test_block")
-	hblock.check_topology(0, 0)
-
-    def test_010_run(self):
-        expected = (1.0, 2.0, 3.0, 4.0)
-        hblock = gr.top_block("test_block")
-        src = gr.vector_source_f(expected, False)
-        sink1 = gr.vector_sink_f()
-        sink2 = gr.vector_sink_f()
-        hblock.connect(src, sink1)
-        hblock.connect(src, sink2)
-        hblock.run()
-        actual1 = sink1.data()
-        actual2 = sink2.data()
-        self.assertEquals(expected, actual1)
-        self.assertEquals(expected, actual2)
-
-    def test_012_disconnect_input(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-	hblock.connect(hblock, nop1)
-        hblock.disconnect(hblock, nop1)
-
-    def test_013_disconnect_input_not_connected(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-        nop2 = gr.nop(gr.sizeof_int)
-	hblock.connect(hblock, nop1)
-        self.assertRaises(ValueError,
-            lambda: hblock.disconnect(hblock, nop2))
-
-    def test_014_disconnect_input_neg(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-	hblock.connect(hblock, nop1)
-        self.assertRaises(ValueError,
-            lambda: hblock.disconnect((hblock, -1), nop1))
-
-    def test_015_disconnect_input_exceeds(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-	hblock.connect(hblock, nop1)
-        self.assertRaises(ValueError,
-            lambda: hblock.disconnect((hblock, 1), nop1))
-
-    def test_016_disconnect_output(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-	hblock.connect(nop1, hblock)
-        hblock.disconnect(nop1, hblock)
-
-    def test_017_disconnect_output_not_connected(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-        nop2 = gr.nop(gr.sizeof_int)
-	hblock.connect(nop1, hblock)
-        self.assertRaises(ValueError,
-            lambda: hblock.disconnect(nop2, hblock))
-
-    def test_018_disconnect_output_neg(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-	hblock.connect(hblock, nop1)
-        self.assertRaises(ValueError,
-            lambda: hblock.disconnect(nop1, (hblock, -1)))
-
-    def test_019_disconnect_output_exceeds(self):
-	hblock = gr.hier_block2("test_block",
-				gr.io_signature(1,1,gr.sizeof_int),
-				gr.io_signature(1,1,gr.sizeof_int))
-	nop1 = gr.nop(gr.sizeof_int)
-	hblock.connect(nop1, hblock)
-        self.assertRaises(ValueError,
-            lambda: hblock.disconnect(nop1, (hblock, 1)))
-
-    def test_020_run(self):
-	hblock = gr.top_block("test_block")
-	data = (1.0, 2.0, 3.0, 4.0)
-	src = gr.vector_source_f(data, False)
-	dst = gr.vector_sink_f()
-	hblock.connect(src, dst)
-	hblock.run()
-	self.assertEquals(data, dst.data())
-
-    def test_021_connect_single(self):
-        hblock = gr.top_block("test_block")
-        blk = gr.hier_block2("block",
-                             gr.io_signature(0, 0, 0),
-                             gr.io_signature(0, 0, 0))
-        hblock.connect(blk)
-
-    def test_022_connect_single_with_ports(self):
-        hblock = gr.top_block("test_block")
-        blk = gr.hier_block2("block",
-                             gr.io_signature(1, 1, 1),
-                             gr.io_signature(1, 1, 1))
-        self.assertRaises(ValueError,
-                          lambda: hblock.connect(blk))
-
-    def test_023_connect_single_twice(self):
-        hblock = gr.top_block("test_block")
-        blk = gr.hier_block2("block",
-                             gr.io_signature(0, 0, 0),
-                             gr.io_signature(0, 0, 0))
-        hblock.connect(blk)
-        self.assertRaises(ValueError,
-                          lambda: hblock.connect(blk))
-
-    def test_024_disconnect_single(self):
-        hblock = gr.top_block("test_block")
-        blk = gr.hier_block2("block",
-                             gr.io_signature(0, 0, 0),
-                             gr.io_signature(0, 0, 0))
-        hblock.connect(blk)
-        hblock.disconnect(blk)
-
-    def test_025_disconnect_single_not_connected(self):
-        hblock = gr.top_block("test_block")
-        blk = gr.hier_block2("block",
-                             gr.io_signature(0, 0, 0),
-                             gr.io_signature(0, 0, 0))
-        self.assertRaises(ValueError,
-                          lambda: hblock.disconnect(blk))
-
-    def test_026_run_single(self):
-        expected_data = (1.0,)
-        tb = gr.top_block("top_block")
-        hb = gr.hier_block2("block",
-                            gr.io_signature(0, 0, 0),
-                            gr.io_signature(0, 0, 0))
-        src = gr.vector_source_f(expected_data)
-        dst = gr.vector_sink_f()
-        hb.connect(src, dst)
-        tb.connect(hb)
-        tb.run()
-        self.assertEquals(expected_data, dst.data())
-
-    def test_027a_internally_unconnected_input(self):
-        tb = gr.top_block()
-        hb = gr.hier_block2("block",
-                            gr.io_signature(1, 1, 1),
-                            gr.io_signature(1, 1, 1))
-        hsrc = gr.vector_source_b([1,])
-        hb.connect(hsrc, hb) # wire output internally
-        src = gr.vector_source_b([1, ])
-        dst = gr.vector_sink_b()
-        tb.connect(src, hb, dst) # hb's input is not connected internally
-        self.assertRaises(RuntimeError,
-                          lambda: tb.run())
-
-    def test_027b_internally_unconnected_output(self):
-        tb = gr.top_block()
-
-        hb = gr.hier_block2("block",
-                            gr.io_signature(1, 1, 1),
-                            gr.io_signature(1, 1, 1))
-        hdst = gr.vector_sink_b()
-        hb.connect(hb, hdst) # wire input internally
-        src = gr.vector_source_b([1, ])
-        dst = gr.vector_sink_b()
-        tb.connect(src, hb, dst) # hb's output is not connected internally
-        self.assertRaises(RuntimeError,
-                          lambda: tb.run())
-
-    def test_027c_fully_unconnected_output(self):
-        tb = gr.top_block()
-        hb = gr.hier_block2("block",
-                            gr.io_signature(1, 1, 1),
-                            gr.io_signature(1, 1, 1))
-        hsrc = gr.vector_sink_b()
-        hb.connect(hb, hsrc) # wire input internally
-        src = gr.vector_source_b([1, ])
-        dst = gr.vector_sink_b()
-        tb.connect(src, hb) # hb's output is not connected internally or externally
-        self.assertRaises(RuntimeError,
-                          lambda: tb.run())
-
-    def test_027d_fully_unconnected_input(self):
-        tb = gr.top_block()
-        hb = gr.hier_block2("block",
-                            gr.io_signature(1, 1, 1),
-                            gr.io_signature(1, 1, 1))
-        hdst = gr.vector_source_b([1,])
-        hb.connect(hdst, hb) # wire output internally
-        dst = gr.vector_sink_b()
-        tb.connect(hb, dst) # hb's input is not connected internally or externally
-        self.assertRaises(RuntimeError,
-                          lambda: tb.run())
-
-    def test_028_singleton_reconfigure(self):
-        tb = gr.top_block()
-        hb = gr.hier_block2("block",
-                            gr.io_signature(0, 0, 0), gr.io_signature(0, 0, 0))
-        src = gr.vector_source_b([1, ])
-        dst = gr.vector_sink_b()
-        hb.connect(src, dst)
-        tb.connect(hb) # Singleton connect
-        tb.lock()
-        tb.disconnect_all()
-        tb.connect(src, dst)
-        tb.unlock()
-
-    def test_029_singleton_disconnect(self):
-        tb = gr.top_block()
-        src = gr.vector_source_b([1, ])
-        dst = gr.vector_sink_b()
-        tb.connect(src, dst)
-        tb.disconnect(src)   # Singleton disconnect
-        tb.connect(src, dst)
-        tb.run()
-        self.assertEquals(dst.data(), (1,))
-
-    def test_030_nested_input(self):
-        tb = gr.top_block()
-        src = gr.vector_source_b([1,])
-        hb1 = gr.hier_block2("hb1",
-                             gr.io_signature(1, 1, gr.sizeof_char),
-                             gr.io_signature(0, 0, 0))
-        hb2 = gr.hier_block2("hb2",
-                             gr.io_signature(1, 1, gr.sizeof_char),
-                             gr.io_signature(0, 0, 0))
-        dst = gr.vector_sink_b()
-        tb.connect(src, hb1)
-        hb1.connect(hb1, hb2)
-        hb2.connect(hb2, gr.kludge_copy(gr.sizeof_char), dst)
-        tb.run()
-        self.assertEquals(dst.data(), (1,))
-
-    def test_031_multiple_internal_inputs(self):
-        tb = gr.top_block()
-        src = gr.vector_source_f([1.0,])
-        hb = gr.hier_block2("hb",
-                            gr.io_signature(1, 1, gr.sizeof_float),
-                            gr.io_signature(1, 1, gr.sizeof_float))
-        m1 = multiply_const_ff(1.0)
-        m2 = multiply_const_ff(2.0)
-        add = add_ff()
-        hb.connect(hb, m1)       # m1 is connected to hb external input #0
-        hb.connect(hb, m2)       # m2 is also connected to hb external input #0
-        hb.connect(m1, (add, 0))
-        hb.connect(m2, (add, 1))
-        hb.connect(add, hb)      # add is connected to hb external output #0
-        dst = gr.vector_sink_f()
-        tb.connect(src, hb, dst)
-        tb.run()
-        self.assertEquals(dst.data(), (3.0,))
-
-    def test_032_nested_multiple_internal_inputs(self):
-        tb = gr.top_block()
-        src = gr.vector_source_f([1.0,])
-        hb = gr.hier_block2("hb",
-                            gr.io_signature(1, 1, gr.sizeof_float),
-                            gr.io_signature(1, 1, gr.sizeof_float))
-        hb2 = gr.hier_block2("hb",
-                            gr.io_signature(1, 1, gr.sizeof_float),
-                            gr.io_signature(1, 1, gr.sizeof_float))
-
-        m1 = multiply_const_ff(1.0)
-        m2 = multiply_const_ff(2.0)
-        add = add_ff()
-        hb2.connect(hb2, m1)       # m1 is connected to hb2 external input #0
-        hb2.connect(hb2, m2)       # m2 is also connected to hb2 external input #0
-        hb2.connect(m1, (add, 0))
-        hb2.connect(m2, (add, 1))
-        hb2.connect(add, hb2)      # add is connected to hb2 external output #0
-        hb.connect(hb, hb2, hb)   # hb as hb2 as nested internal block
-        dst = gr.vector_sink_f()
-        tb.connect(src, hb, dst)
-        tb.run()
-        self.assertEquals(dst.data(), (3.0,))
-
-
-if __name__ == "__main__":
-    gr_unittest.run(test_hier_block2, "test_hier_block2.xml")
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_kludge_copy.py b/gnuradio-core/src/python/gnuradio/gr/qa_kludge_copy.py
deleted file mode 100755
index 2a3aa44b1b..0000000000
--- a/gnuradio-core/src/python/gnuradio/gr/qa_kludge_copy.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2006,2010 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gr_unittest
-import math
-import random
-
-
-class test_kludge_copy(gr_unittest.TestCase):
-
-    def setUp(self):
-        self.tb = gr.top_block()
-        self.rng = random.Random()
-        self.rng.seed(0)
-
-    def tearDown(self):
-	del self.tb
-	del self.rng
-
-    def make_random_int_tuple(self, L):
-        result = []
-        for x in range(L):
-            result.append(self.rng.randint(int(-1e9), int(+1e9)))
-        return tuple(result)
-
-
-    def test_001(self):
-        # 1 input stream; 1 output stream
-        src0_data = self.make_random_int_tuple(16000)
-        src0 = gr.vector_source_i(src0_data)
-        op = gr.kludge_copy(gr.sizeof_int)
-        dst0 = gr.vector_sink_i()
-        self.tb.connect(src0, op, dst0)
-        self.tb.run()
-        dst0_data = dst0.data()
-        self.assertEqual(src0_data, dst0_data)
-
-    def test_002(self):
-        # 2 input streams; 2 output streams
-        src0_data = self.make_random_int_tuple(16000)
-        src1_data = self.make_random_int_tuple(16000)
-        src0 = gr.vector_source_i(src0_data)
-        src1 = gr.vector_source_i(src1_data)
-        op = gr.kludge_copy(gr.sizeof_int)
-        dst0 = gr.vector_sink_i()
-        dst1 = gr.vector_sink_i()
-        self.tb.connect(src0, (op, 0), dst0)
-        self.tb.connect(src1, (op, 1), dst1)
-        self.tb.run()
-        dst0_data = dst0.data()
-        dst1_data = dst1.data()
-        self.assertEqual(src0_data, dst0_data)
-        self.assertEqual(src1_data, dst1_data)
-
-    # Note: this is disabled due to triggering bug in ticket:181
-    # It only occurs with new top block code
-    def xtest_003(self):
-        # number of input streams != number of output streams
-        src0_data = self.make_random_int_tuple(16000)
-        src1_data = self.make_random_int_tuple(16000)
-        src0 = gr.vector_source_i(src0_data)
-        src1 = gr.vector_source_i(src1_data)
-        op = gr.kludge_copy(gr.sizeof_int)
-        dst0 = gr.vector_sink_i()
-        dst1 = gr.vector_sink_i()
-        self.tb.connect(src0, (op, 0), dst0)
-        self.tb.connect(src1, (op, 1))
-        self.assertRaises(ValueError, self.tb.run)
-
-if __name__ == '__main__':
-    gr_unittest.run(test_kludge_copy, "test_kludge_copy.xml")
-
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_python_message_passing.py b/gnuradio-core/src/python/gnuradio/gr/qa_python_message_passing.py
deleted file mode 100644
index 51f8ede4db..0000000000
--- a/gnuradio-core/src/python/gnuradio/gr/qa_python_message_passing.py
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2013 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gr_unittest
-try: import pmt
-except: from gruel import pmt
-import numpy
-import time
-
-# Simple block to generate messages
-class message_generator(gr.sync_block):
-    def __init__(self, msg_list, msg_interval):
-        gr.sync_block.__init__(
-            self,
-            name = "message generator",
-            in_sig = [numpy.float32],
-            out_sig = None
-        )
-        self.msg_list = msg_list
-        self.msg_interval = msg_interval
-        self.msg_ctr = 0
-        self.message_port_register_out(pmt.intern('out_port'))
-
-
-    def work(self, input_items, output_items):
-        inLen = len(input_items[0])
-        while self.msg_ctr < len(self.msg_list) and \
-                (self.msg_ctr * self.msg_interval) < \
-                (self.nitems_read(0) + inLen):
-            self.message_port_pub(pmt.intern('out_port'),
-                                  self.msg_list[self.msg_ctr])
-            self.msg_ctr += 1
-        return inLen
-
-# Simple block to consume messages
-class message_consumer(gr.sync_block):
-    def __init__(self):
-        gr.sync_block.__init__(
-            self,
-            name = "message consumer",
-            in_sig = None,
-            out_sig = None
-        )
-        self.msg_list = []
-        self.message_port_register_in(pmt.intern('in_port'))
-        self.set_msg_handler(pmt.intern('in_port'),
-                             self.handle_msg)
-
-    def handle_msg(self, msg):
-        # Create a new PMT from long value and put in list
-        self.msg_list.append(pmt.from_long(pmt.to_long(msg)))
-
-class test_python_message_passing(gr_unittest.TestCase):
-    
-    def setUp(self):
-        self.tb = gr.top_block()
-
-    def tearDown(self):
-        self.tb = None
-
-    def test_000(self):
-        num_msgs = 10
-        msg_interval = 1000
-        msg_list = []
-        for i in range(num_msgs):
-            msg_list.append(pmt.from_long(i))
-
-        # Create vector source with dummy data to trigger messages
-        src_data = []
-        for i in range(num_msgs*msg_interval):
-            src_data.append(float(i))
-        src = gr.vector_source_f(src_data, False)
-        msg_gen = message_generator(msg_list, msg_interval)
-        msg_cons = message_consumer()
-        
-        # Connect vector source to message gen
-        self.tb.connect(src, msg_gen)
-        
-        # Connect message generator to message consumer
-        self.tb.msg_connect(msg_gen, 'out_port', msg_cons, 'in_port')
-
-        # Verify that the messgae port query functions work
-        self.assertEqual(pmt.symbol_to_string(pmt.vector_ref(
-                    msg_gen.message_ports_out(), 0)), 'out_port')
-        self.assertEqual(pmt.symbol_to_string(pmt.vector_ref(
-                    msg_cons.message_ports_in(), 0)), 'in_port')
-        
-        # Run to verify message passing
-        self.tb.start()
-
-        # Wait for all messages to be sent
-        while msg_gen.msg_ctr < num_msgs:
-            time.sleep(0.5)
-        self.tb.stop()
-        self.tb.wait()               
-        
-        # Verify that the message consumer got all the messages
-        self.assertEqual(num_msgs, len(msg_cons.msg_list))
-        for i in range(num_msgs):
-            self.assertTrue(pmt.equal(msg_list[i], msg_cons.msg_list[i]))
-        
-if __name__ == '__main__':
-    gr_unittest.run(test_python_message_passing, 
-                    'test_python_message_passing.xml')
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_skiphead.py b/gnuradio-core/src/python/gnuradio/gr/qa_skiphead.py
deleted file mode 100755
index 1e730398c7..0000000000
--- a/gnuradio-core/src/python/gnuradio/gr/qa_skiphead.py
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2007,2010 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gr_unittest
-
-class test_skiphead (gr_unittest.TestCase):
-
-    def setUp(self):
-        self.tb = gr.top_block ()
-        self.src_data = [int(x) for x in range(65536)]
-
-    def tearDown(self):
-        self.tb = None
-
-    def test_skip_0(self):
-        skip_cnt = 0
-        expected_result = tuple(self.src_data[skip_cnt:])
-        src1 = gr.vector_source_i (self.src_data)
-        op = gr.skiphead (gr.sizeof_int, skip_cnt)
-        dst1 = gr.vector_sink_i ()
-        self.tb.connect (src1, op, dst1)
-        self.tb.run ()
-        dst_data = dst1.data ()
-        self.assertEqual (expected_result, dst_data)
-
-    def test_skip_1(self):
-        skip_cnt = 1
-        expected_result = tuple(self.src_data[skip_cnt:])
-        src1 = gr.vector_source_i (self.src_data)
-        op = gr.skiphead (gr.sizeof_int, skip_cnt)
-        dst1 = gr.vector_sink_i ()
-        self.tb.connect (src1, op, dst1)
-        self.tb.run ()
-        dst_data = dst1.data ()
-        self.assertEqual (expected_result, dst_data)
-
-    def test_skip_1023(self):
-        skip_cnt = 1023
-        expected_result = tuple(self.src_data[skip_cnt:])
-        src1 = gr.vector_source_i (self.src_data)
-        op = gr.skiphead (gr.sizeof_int, skip_cnt)
-        dst1 = gr.vector_sink_i ()
-        self.tb.connect (src1, op, dst1)
-        self.tb.run ()
-        dst_data = dst1.data ()
-        self.assertEqual (expected_result, dst_data)
-
-    def test_skip_6339(self):
-        skip_cnt = 6339
-        expected_result = tuple(self.src_data[skip_cnt:])
-        src1 = gr.vector_source_i (self.src_data)
-        op = gr.skiphead (gr.sizeof_int, skip_cnt)
-        dst1 = gr.vector_sink_i ()
-        self.tb.connect (src1, op, dst1)
-        self.tb.run ()
-        dst_data = dst1.data ()
-        self.assertEqual (expected_result, dst_data)
-
-    def test_skip_12678(self):
-        skip_cnt = 12678
-        expected_result = tuple(self.src_data[skip_cnt:])
-        src1 = gr.vector_source_i (self.src_data)
-        op = gr.skiphead (gr.sizeof_int, skip_cnt)
-        dst1 = gr.vector_sink_i ()
-        self.tb.connect (src1, op, dst1)
-        self.tb.run ()
-        dst_data = dst1.data ()
-        self.assertEqual (expected_result, dst_data)
-
-    def test_skip_all(self):
-        skip_cnt = len(self.src_data)
-        expected_result = tuple(self.src_data[skip_cnt:])
-        src1 = gr.vector_source_i (self.src_data)
-        op = gr.skiphead (gr.sizeof_int, skip_cnt)
-        dst1 = gr.vector_sink_i ()
-        self.tb.connect (src1, op, dst1)
-        self.tb.run ()
-        dst_data = dst1.data ()
-        self.assertEqual (expected_result, dst_data)
-
-
-if __name__ == '__main__':
-    gr_unittest.run(test_skiphead, "test_skiphead.xml")
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_vector_insert.py b/gnuradio-core/src/python/gnuradio/gr/qa_vector_insert.py
deleted file mode 100755
index acc06dfded..0000000000
--- a/gnuradio-core/src/python/gnuradio/gr/qa_vector_insert.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2012 Free Software Foundation, Inc.
-# 
-# This file is part of GNU Radio
-# 
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-# 
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-# 
-
-from gnuradio import gr, gr_unittest
-import math
-
-class test_vector_insert(gr_unittest.TestCase):
-
-    def setUp (self):
-        self.tb = gr.top_block ()
-
-    def tearDown (self):
-        self.tb = None
-
-    def test_001(self):
-        src_data = [float(x) for x in range(16)]
-        expected_result = tuple(src_data)
-
-        period = 9177;
-        offset = 0;
-
-        src = gr.null_source(1)
-        head = gr.head(1, 10000000);
-        ins = gr.vector_insert_b([1], period, offset);
-        dst = gr.vector_sink_b()
-
-        self.tb.connect(src, head, ins, dst)
-        self.tb.run()
-        result_data = dst.data()
-
-        for i in range(10000):
-            if(i%period == offset):
-                self.assertEqual(1, result_data[i])
-            else:
-                self.assertEqual(0, result_data[i])
-
-if __name__ == '__main__':
-    gr_unittest.run(test_vector_insert, "test_vector_insert.xml")
-
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_vector_map.py b/gnuradio-core/src/python/gnuradio/gr/qa_vector_map.py
deleted file mode 100644
index 12f4be5898..0000000000
--- a/gnuradio-core/src/python/gnuradio/gr/qa_vector_map.py
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2012 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gr_unittest
-import math
-
-class test_vector_map(gr_unittest.TestCase):
-
-    def setUp (self):
-        self.tb = gr.top_block()
-
-    def tearDown (self):
-        self.tb = None
-
-    def test_reversing(self):
-        # Chunk data in blocks of N and reverse the block contents.
-        N = 5
-        src_data = range(0, 20)
-        expected_result = []
-        for i in range(N-1, len(src_data), N):
-            for j in range(0, N):
-                expected_result.append(1.0*(i-j))
-        mapping = [list(reversed([(0, i) for i in range(0, N)]))]
-        src = gr.vector_source_f(src_data, False, N)
-        vmap = gr.vector_map(gr.sizeof_float, (N, ), mapping)
-        dst = gr.vector_sink_f(N)
-        self.tb.connect(src, vmap, dst)
-        self.tb.run()
-        result_data = list(dst.data())
-        self.assertEqual(expected_result, result_data)
-
-    def test_vector_to_streams(self):
-        # Split an input vector into N streams.
-        N = 5
-        M = 20
-        src_data = range(0, M)
-        expected_results = []
-        for n in range(0, N):
-            expected_results.append(range(n, M, N))
-        mapping = [[(0, n)] for n in range(0, N)]
-        src = gr.vector_source_f(src_data, False, N)
-        vmap = gr.vector_map(gr.sizeof_float, (N, ), mapping)
-        dsts = [gr.vector_sink_f(1) for n in range(0, N)]
-        self.tb.connect(src, vmap)
-        for n in range(0, N):
-            self.tb.connect((vmap, n), dsts[n])
-        self.tb.run()
-        for n in range(0, N):
-            result_data = list(dsts[n].data())
-            self.assertEqual(expected_results[n], result_data)
-        
-    def test_interleaving(self):
-        # Takes 3 streams (a, b and c)
-        # Outputs 2 streams.
-        # First (d) is interleaving of a and b.
-        # Second (e) is interleaving of a and b and c.  c is taken in
-        #     chunks of 2 which are reversed.
-        A = (1, 2, 3, 4, 5)
-        B = (11, 12, 13, 14, 15)
-        C = (99, 98, 97, 96, 95, 94, 93, 92, 91, 90)
-        expected_D = (1, 11, 2, 12, 3, 13, 4, 14, 5, 15)
-        expected_E = (1, 11, 98, 99, 2, 12, 96, 97, 3, 13, 94, 95,
-                      4, 14, 92, 93, 5, 15, 90, 91)
-        mapping = [[(0, 0), (1, 0)], # mapping to produce D
-                   [(0, 0), (1, 0), (2, 1), (2, 0)], # mapping to produce E
-                   ]
-        srcA = gr.vector_source_f(A, False, 1)
-        srcB = gr.vector_source_f(B, False, 1)
-        srcC = gr.vector_source_f(C, False, 2)
-        vmap =  gr.vector_map(gr.sizeof_int, (1, 1, 2), mapping)
-        dstD = gr.vector_sink_f(2)
-        dstE = gr.vector_sink_f(4)
-        self.tb.connect(srcA, (vmap, 0))
-        self.tb.connect(srcB, (vmap, 1)) 
-        self.tb.connect(srcC, (vmap, 2)) 
-        self.tb.connect((vmap, 0), dstD)
-        self.tb.connect((vmap, 1), dstE)
-        self.tb.run()
-        self.assertEqual(expected_D, dstD.data())
-        self.assertEqual(expected_E, dstE.data())
-       
-        
-
-if __name__ == '__main__':
-    gr_unittest.run(test_vector_map, "test_vector_map.xml")
-
diff --git a/gnuradio-core/src/python/gnuradio/gr/qa_vector_sink_source.py b/gnuradio-core/src/python/gnuradio/gr/qa_vector_sink_source.py
deleted file mode 100755
index 64cbbe72a3..0000000000
--- a/gnuradio-core/src/python/gnuradio/gr/qa_vector_sink_source.py
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2008,2010 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING.  If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
-#
-
-from gnuradio import gr, gr_unittest
-import math
-
-class test_vector_sink_source(gr_unittest.TestCase):
-
-    def setUp (self):
-        self.tb = gr.top_block ()
-
-    def tearDown (self):
-        self.tb = None
-
-    def test_001(self):
-        src_data = [float(x) for x in range(16)]
-        expected_result = tuple(src_data)
-
-        src = gr.vector_source_f(src_data)
-        dst = gr.vector_sink_f()
-
-        self.tb.connect(src, dst)
-        self.tb.run()
-        result_data = dst.data()
-        self.assertEqual(expected_result, result_data)
-
-    def test_002(self):
-        src_data = [float(x) for x in range(16)]
-        expected_result = tuple(src_data)
-
-        src = gr.vector_source_f(src_data, False, 2)
-        dst = gr.vector_sink_f(2)
-
-        self.tb.connect(src, dst)
-        self.tb.run()
-        result_data = dst.data()
-        self.assertEqual(expected_result, result_data)
-
-    def test_003(self):
-        src_data = [float(x) for x in range(16)]
-        expected_result = tuple(src_data)
-        self.assertRaises(ValueError, lambda : gr.vector_source_f(src_data, False, 3))
-
-if __name__ == '__main__':
-    gr_unittest.run(test_vector_sink_source, "test_vector_sink_source.xml")
-
diff --git a/gnuradio-core/src/tests/CMakeLists.txt b/gnuradio-core/src/tests/CMakeLists.txt
index ef58cf9ef5..0c30b15a1d 100644
--- a/gnuradio-core/src/tests/CMakeLists.txt
+++ b/gnuradio-core/src/tests/CMakeLists.txt
@@ -43,7 +43,6 @@ link_directories(${LOG4CPP_LIBRARY_DIRS})
 # Build benchmarks and non-registered tests
 ########################################################################
 set(tests_not_run #single source per test
-    test_runtime.cc
     test_general.cc
     test_vmcircbuf.cc
 )
diff --git a/gnuradio-core/src/tests/test_all.cc b/gnuradio-core/src/tests/test_all.cc
index fb45cbf8f4..f1fbce4e05 100644
--- a/gnuradio-core/src/tests/test_all.cc
+++ b/gnuradio-core/src/tests/test_all.cc
@@ -24,7 +24,6 @@
 #include <cppunit/XmlOutputter.h>
 
 #include <gr_unittests.h>
-#include <qa_runtime.h>
 #include <qa_general.h>
 
 // FIXME add atsc back in.
@@ -36,7 +35,6 @@ main (int argc, char **argv)
   std::ofstream xmlfile(get_unittest_path("gnuradio_core_all.xml").c_str());
   CppUnit::XmlOutputter *xmlout = new CppUnit::XmlOutputter(&runner.result(), xmlfile);
 
-  runner.addTest (qa_runtime::suite ());
   runner.addTest (qa_general::suite ());
   runner.setOutputter(xmlout);
 
diff --git a/gnuradio-core/src/tests/test_buffers.py b/gnuradio-core/src/tests/test_buffers.py
index 2664c136c6..e0abb8b304 100755
--- a/gnuradio-core/src/tests/test_buffers.py
+++ b/gnuradio-core/src/tests/test_buffers.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2006 Free Software Foundation, Inc.
+# Copyright 2006,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gru
 from gnuradio import audio
+from gnuradio import blocks
 from gnuradio.eng_option import eng_option
 from optparse import OptionParser
 
@@ -68,7 +69,7 @@ class my_graph(gr.top_block):
         nsamples=int(sample_rate * seconds) #1 seconds
 
         data = sig_source_f(sample_rate, 350, ampl, nsamples)
-        src0 = gr.vector_source_f(data)
+        src0 = blocks.vector_source_f(data)
 
         # gr.test (const std::string &name=std::string("gr_test"),
         # int min_inputs=1, int max_inputs=1, unsigned int sizeof_input_item=1,
diff --git a/gnuradio-core/src/tests/test_runtime.cc b/gnuradio-core/src/tests/test_runtime.cc
deleted file mode 100644
index bd5378332e..0000000000
--- a/gnuradio-core/src/tests/test_runtime.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- c++ -*- */
-/*
- * Copyright 2002,2010,2011 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-#include <cppunit/TextTestRunner.h>
-#include <cppunit/XmlOutputter.h>
-
-#include <gr_unittests.h>
-#include <qa_runtime.h>
-
-int
-main (int argc, char **argv)
-{
-  CppUnit::TextTestRunner runner;
-  std::ofstream xmlfile(get_unittest_path("gnuradio_core_runtime.xml").c_str());
-  CppUnit::XmlOutputter *xmlout = new CppUnit::XmlOutputter(&runner.result(), xmlfile);
-
-  runner.addTest (qa_runtime::suite ());
-  runner.setOutputter(xmlout);
-
-  bool was_successful = runner.run ("", false);
-
-  return was_successful ? 0 : 1;
-}
diff --git a/gr-analog/examples/fmtest.py b/gr-analog/examples/fmtest.py
index 294fa0d425..359b05ba04 100755
--- a/gr-analog/examples/fmtest.py
+++ b/gr-analog/examples/fmtest.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2009,2012 Free Software Foundation, Inc.
+# Copyright 2009,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -84,8 +84,8 @@ class fmtest(gr.top_block):
             self.connect(sig, fm)
             self.connect(fm, (self.sum, n))
 
-        self.head = gr.head(gr.sizeof_gr_complex, self._nsamples)
-        self.snk_tx = gr.vector_sink_c()
+        self.head = blocks.head(gr.sizeof_gr_complex, self._nsamples)
+        self.snk_tx = blocks.vector_sink_c()
         self.channel = filter.channel_model(0.1)
 
         self.connect(self.sum, self.head, self.channel, self.snk_tx)
@@ -116,7 +116,7 @@ class fmtest(gr.top_block):
         for i in xrange(self._M):
             self.fmdet.append(analog.nbfm_rx(self._audio_rate, self._chan_rate))
             self.squelch.append(analog.standard_squelch(self._audio_rate*10))
-            self.snks.append(gr.vector_sink_f())
+            self.snks.append(blocks.vector_sink_f())
             self.connect((self.pfb, i), self.fmdet[i], self.squelch[i], self.snks[i])
 
     def num_tx_channels(self):
diff --git a/gr-analog/examples/tags/uhd_burst_detector.py b/gr-analog/examples/tags/uhd_burst_detector.py
index c0a8d955c2..b1bb15b974 100755
--- a/gr-analog/examples/tags/uhd_burst_detector.py
+++ b/gr-analog/examples/tags/uhd_burst_detector.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -55,7 +55,7 @@ class uhd_burst_detector(gr.top_block):
 
         # Dummy signaler to collect a burst on known periods
         data = 1000*[0,] + 1000*[1,]
-        self.signal = gr.vector_source_s(data, True)
+        self.signal = blocks.vector_source_s(data, True)
 
         # Energy detector to get signal burst
         ## use squelch to detect energy
diff --git a/gr-analog/python/CMakeLists.txt b/gr-analog/python/CMakeLists.txt
index 44e38621a2..e4d1d0aa74 100644
--- a/gr-analog/python/CMakeLists.txt
+++ b/gr-analog/python/CMakeLists.txt
@@ -47,6 +47,8 @@ if(ENABLE_TESTING)
 list(APPEND GR_TEST_PYTHON_DIRS
     ${CMAKE_BINARY_DIR}/gr-analog/python
     ${CMAKE_BINARY_DIR}/gr-analog/swig
+    ${CMAKE_BINARY_DIR}/gr-blocks/python
+    ${CMAKE_BINARY_DIR}/gr-blocks/swig
     ${CMAKE_BINARY_DIR}/gr-filter/python
     ${CMAKE_BINARY_DIR}/gr-filter/swig
 )
diff --git a/gr-analog/python/qa_agc.py b/gr-analog/python/qa_agc.py
index 263f9a647e..0d8a7bfb5d 100755
--- a/gr-analog/python/qa_agc.py
+++ b/gr-analog/python/qa_agc.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import math
 
 class test_agc(gr_unittest.TestCase):
@@ -105,8 +106,8 @@ class test_agc(gr_unittest.TestCase):
         sampling_freq = 100
         src1 = analog.sig_source_c(sampling_freq, analog.GR_SIN_WAVE,
                                    sampling_freq * 0.10, 100.0)
-        dst1 = gr.vector_sink_c()
-        head = gr.head(gr.sizeof_gr_complex, int (5*sampling_freq * 0.10))
+        dst1 = blocks.vector_sink_c()
+        head = blocks.head(gr.sizeof_gr_complex, int (5*sampling_freq * 0.10))
 
         agc = analog.agc_cc(1e-3, 1, 1, 1000)
 
@@ -190,8 +191,8 @@ class test_agc(gr_unittest.TestCase):
         sampling_freq = 100
         src1 = analog.sig_source_f(sampling_freq, analog.GR_SIN_WAVE,
                                    sampling_freq * 0.10, 100.0)
-        dst1 = gr.vector_sink_f ()
-        head = gr.head (gr.sizeof_float, int (5*sampling_freq * 0.10))
+        dst1 = blocks.vector_sink_f ()
+        head = blocks.head (gr.sizeof_float, int (5*sampling_freq * 0.10))
 
         agc = analog.agc_ff(1e-3, 1, 1, 1000)
 
@@ -277,8 +278,8 @@ class test_agc(gr_unittest.TestCase):
         sampling_freq = 100
         src1 = analog.sig_source_c(sampling_freq, analog.GR_SIN_WAVE,
                                    sampling_freq * 0.10, 100)
-        dst1 = gr.vector_sink_c()
-        head = gr.head(gr.sizeof_gr_complex, int(5*sampling_freq * 0.10))
+        dst1 = blocks.vector_sink_c()
+        head = blocks.head(gr.sizeof_gr_complex, int(5*sampling_freq * 0.10))
 
         agc = analog.agc2_cc(1e-2, 1e-3, 1, 1, 1000)
 
@@ -364,8 +365,8 @@ class test_agc(gr_unittest.TestCase):
         sampling_freq = 100
         src1 = analog.sig_source_f(sampling_freq, analog.GR_SIN_WAVE,
                                    sampling_freq * 0.10, 100)
-        dst1 = gr.vector_sink_f()
-        head = gr.head(gr.sizeof_float, int(5*sampling_freq * 0.10))
+        dst1 = blocks.vector_sink_f()
+        head = blocks.head(gr.sizeof_float, int(5*sampling_freq * 0.10))
 
         agc = analog.agc2_ff(1e-2, 1e-3, 1, 1, 1000)
 
@@ -437,8 +438,8 @@ class test_agc(gr_unittest.TestCase):
         sampling_freq = 100
         src1 = analog.sig_source_c(sampling_freq, analog.GR_SIN_WAVE,
                                    sampling_freq * 0.10, 100)
-        dst1 = gr.vector_sink_c()
-        head = gr.head(gr.sizeof_gr_complex, int(5*sampling_freq * 0.10))
+        dst1 = blocks.vector_sink_c()
+        head = blocks.head(gr.sizeof_gr_complex, int(5*sampling_freq * 0.10))
 
         agc = analog.agc2_cc(1e-2, 1e-3, 1, 1, 1000)
 
@@ -459,9 +460,9 @@ class test_agc(gr_unittest.TestCase):
         input_data = 8*(0.0,) + 24*(1.0,) + 24*(0.0,)
         expected_result = (8+length-1)*(0.0,) + 24*(gain*1.0,) + (0,)
 
-        src = gr.vector_source_c(input_data)
+        src = blocks.vector_source_c(input_data)
         agc = analog.feedforward_agc_cc(8, 2.0)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, agc, dst)
 
         self.tb.run()
diff --git a/gr-analog/python/qa_cpfsk.py b/gr-analog/python/qa_cpfsk.py
index decf94ea3f..7998d8079d 100755
--- a/gr-analog/python/qa_cpfsk.py
+++ b/gr-analog/python/qa_cpfsk.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import math
 
 class test_cpfsk_bc(gr_unittest.TestCase):
@@ -52,9 +53,9 @@ class test_cpfsk_bc(gr_unittest.TestCase):
         src_data = 10*[0, 1]
         expected_result = map(lambda x: complex(2*x-1,0), src_data)
 
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         op = analog.cpfsk_bc(2, 1, 2)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
diff --git a/gr-analog/python/qa_ctcss_squelch.py b/gr-analog/python/qa_ctcss_squelch.py
index 08d3dbfef8..622cca234f 100755
--- a/gr-analog/python/qa_ctcss_squelch.py
+++ b/gr-analog/python/qa_ctcss_squelch.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 
 class test_ctcss_squelch(gr_unittest.TestCase):
 
@@ -68,10 +69,10 @@ class test_ctcss_squelch(gr_unittest.TestCase):
         expected_result = src_data
         expected_result[0] = 0
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = analog.ctcss_squelch_ff(rate, freq, level,
                                      length, ramp, gate)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
@@ -90,10 +91,10 @@ class test_ctcss_squelch(gr_unittest.TestCase):
         gate = False
 
         src_data = map(lambda x: float(x)/10.0, range(1, 40))
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = analog.ctcss_squelch_ff(rate, freq, level,
                                      length, ramp, gate)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
diff --git a/gr-analog/python/qa_dpll.py b/gr-analog/python/qa_dpll.py
index 3ef8a6e285..98ddf83eff 100755
--- a/gr-analog/python/qa_dpll.py
+++ b/gr-analog/python/qa_dpll.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import math
 
 class test_dpll_bb(gr_unittest.TestCase):
@@ -60,9 +61,9 @@ class test_dpll_bb(gr_unittest.TestCase):
         src_data = 10*((period-1)*[0,] + [1,])
         expected_result = src_data
 
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         op = analog.dpll_bb(period, gain)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
diff --git a/gr-analog/python/qa_fmdet.py b/gr-analog/python/qa_fmdet.py
index a76ac1d247..6c99b08803 100755
--- a/gr-analog/python/qa_fmdet.py
+++ b/gr-analog/python/qa_fmdet.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import math
 
 class test_fmdet_cf(gr_unittest.TestCase):
@@ -63,9 +64,9 @@ class test_fmdet_cf(gr_unittest.TestCase):
     def est_fmdet_cf_002(self):
         N = 100
         src = analog.sig_source_c(1, analog.GR_SIN_WAVE, 0.2, 1)
-        head = gr.head(gr.sizeof_gr_complex, N)
+        head = blocks.head(gr.sizeof_gr_complex, N)
         op = analog.fmdet_cf(1, 0.1, 0.3, 0.1)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         self.tb.connect(src, head, op)
         self.tb.connect(op, dst)
diff --git a/gr-analog/python/qa_frequency_modulator.py b/gr-analog/python/qa_frequency_modulator.py
index b673b3275c..7d6cff3fea 100755
--- a/gr-analog/python/qa_frequency_modulator.py
+++ b/gr-analog/python/qa_frequency_modulator.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import math
 
 def sincos(x):
@@ -42,9 +43,9 @@ class test_frequency_modulator(gr_unittest.TestCase):
         src_data = (1.0/4, 1.0/2, 1.0/4, -1.0/4, -1.0/2, -1/4.0)
         running_sum = (pi/16, 3*pi/16, pi/4, 3*pi/16, pi/16, 0)
         expected_result = tuple([sincos(x) for x in running_sum])
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = analog.frequency_modulator_fc(sensitivity)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
diff --git a/gr-analog/python/qa_phase_modulator.py b/gr-analog/python/qa_phase_modulator.py
index a9c8c84597..81334177db 100755
--- a/gr-analog/python/qa_phase_modulator.py
+++ b/gr-analog/python/qa_phase_modulator.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import math
 
 def sincos(x):
@@ -42,9 +43,9 @@ class test_phase_modulator(gr_unittest.TestCase):
         src_data = (1.0/4, 1.0/2, 1.0/4, -1.0/4, -1.0/2, -1/4.0)
         expected_result = tuple([sincos(sensitivity*x) for x in src_data])
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = analog.phase_modulator_fc(sensitivity)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
diff --git a/gr-analog/python/qa_plateau_detector_fb.py b/gr-analog/python/qa_plateau_detector_fb.py
index 5f8abc74ec..6f330440ef 100755
--- a/gr-analog/python/qa_plateau_detector_fb.py
+++ b/gr-analog/python/qa_plateau_detector_fb.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 
 class qa_plateau_detector_fb (gr_unittest.TestCase):
 
@@ -36,8 +37,8 @@ class qa_plateau_detector_fb (gr_unittest.TestCase):
         test_signal  = (0, 1, .2, .4, .6, .8, 1, 1, 1, 1, 1, .8, .6, .4, 1, 0)
         expected_sig = (0, 0,  0,  0,  0,  0, 0, 0, 1, 0, 0,  0,  0,  0, 0, 0)
         #                                           | Center of Plateau
-        sink = gr.vector_sink_b()
-        self.tb.connect(gr.vector_source_f(test_signal), analog.plateau_detector_fb(5), sink)
+        sink = blocks.vector_sink_b()
+        self.tb.connect(blocks.vector_source_f(test_signal), analog.plateau_detector_fb(5), sink)
         self.tb.run ()
         self.assertEqual(expected_sig, sink.data())
 
diff --git a/gr-analog/python/qa_pll_carriertracking.py b/gr-analog/python/qa_pll_carriertracking.py
index e383639d49..2a6bb9f0b3 100755
--- a/gr-analog/python/qa_pll_carriertracking.py
+++ b/gr-analog/python/qa_pll_carriertracking.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010-2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010-2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import math
 
 class test_pll_carriertracking(gr_unittest.TestCase):
@@ -143,8 +144,8 @@ class test_pll_carriertracking(gr_unittest.TestCase):
 
         src = analog.sig_source_c(sampling_freq, analog.GR_COS_WAVE, freq, 1.0)
         pll = analog.pll_carriertracking_cc(loop_bw, maxf, minf)
-        head = gr.head(gr.sizeof_gr_complex, int (freq))
-        dst = gr.vector_sink_c()
+        head = blocks.head(gr.sizeof_gr_complex, int (freq))
+        dst = blocks.vector_sink_c()
 
         self.tb.connect(src, pll, head)
         self.tb.connect(head, dst)
diff --git a/gr-analog/python/qa_pll_freqdet.py b/gr-analog/python/qa_pll_freqdet.py
index cc8757c965..11f2a9b959 100755
--- a/gr-analog/python/qa_pll_freqdet.py
+++ b/gr-analog/python/qa_pll_freqdet.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010-2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010-2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import math
 
 class test_pll_freqdet(gr_unittest.TestCase):
@@ -143,8 +144,8 @@ class test_pll_freqdet(gr_unittest.TestCase):
 
         src = analog.sig_source_c(sampling_freq, analog.GR_COS_WAVE, freq, 1.0)
         pll = analog.pll_freqdet_cf(loop_bw, maxf, minf)
-        head = gr.head(gr.sizeof_float, int (freq))
-        dst = gr.vector_sink_f()
+        head = blocks.head(gr.sizeof_float, int (freq))
+        dst = blocks.vector_sink_f()
 
         self.tb.connect(src, pll, head)
         self.tb.connect(head, dst)
diff --git a/gr-analog/python/qa_pll_refout.py b/gr-analog/python/qa_pll_refout.py
index c63136bc0c..f90e7c3ada 100755
--- a/gr-analog/python/qa_pll_refout.py
+++ b/gr-analog/python/qa_pll_refout.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import math
 
 class test_pll_refout(gr_unittest.TestCase):
@@ -143,8 +144,8 @@ class test_pll_refout(gr_unittest.TestCase):
 
         src = analog.sig_source_c(sampling_freq, analog.GR_COS_WAVE, freq, 1.0)
         pll = analog.pll_refout_cc(loop_bw, maxf, minf)
-        head = gr.head(gr.sizeof_gr_complex, int (freq))
-        dst = gr.vector_sink_c()
+        head = blocks.head(gr.sizeof_gr_complex, int (freq))
+        dst = blocks.vector_sink_c()
 
         self.tb.connect(src, pll, head)
         self.tb.connect(head, dst)
diff --git a/gr-analog/python/qa_probe_avg_mag_sqrd.py b/gr-analog/python/qa_probe_avg_mag_sqrd.py
index 5c6c97e450..930077c9c0 100755
--- a/gr-analog/python/qa_probe_avg_mag_sqrd.py
+++ b/gr-analog/python/qa_probe_avg_mag_sqrd.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import math
 
 def avg_mag_sqrd_c(x, alpha):
@@ -52,7 +53,7 @@ class test_probe_avg_mag_sqrd(gr_unittest.TestCase):
                     6.0+6.0j, 7.0+7.0j, 8.0+8.0j, 9.0+9.0j, 10.0+10.0j]
         expected_result = avg_mag_sqrd_c(src_data, alpha)[-1]
 
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = analog.probe_avg_mag_sqrd_c(0, alpha)
 
         self.tb.connect(src, op)
@@ -67,9 +68,9 @@ class test_probe_avg_mag_sqrd(gr_unittest.TestCase):
                     6.0+6.0j, 7.0+7.0j, 8.0+8.0j, 9.0+9.0j, 10.0+10.0j]
         expected_result = avg_mag_sqrd_c(src_data, alpha)[0:-1]
 
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = analog.probe_avg_mag_sqrd_cf(0, alpha)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
@@ -84,7 +85,7 @@ class test_probe_avg_mag_sqrd(gr_unittest.TestCase):
                     6.0, 7.0, 8.0, 9.0, 10.0]
         expected_result = avg_mag_sqrd_f(src_data, alpha)[-1]
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = analog.probe_avg_mag_sqrd_f(0, alpha)
 
         self.tb.connect(src, op)
diff --git a/gr-analog/python/qa_pwr_squelch.py b/gr-analog/python/qa_pwr_squelch.py
index dd42c7fb90..238723ba3c 100755
--- a/gr-analog/python/qa_pwr_squelch.py
+++ b/gr-analog/python/qa_pwr_squelch.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 
 class test_pwr_squelch(gr_unittest.TestCase):
 
@@ -63,9 +64,9 @@ class test_pwr_squelch(gr_unittest.TestCase):
         thr = -25
 
         src_data = map(lambda x: float(x)/10.0, range(1, 40))
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = analog.pwr_squelch_cc(thr, alpha)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
@@ -109,9 +110,9 @@ class test_pwr_squelch(gr_unittest.TestCase):
         thr = -25
 
         src_data = map(lambda x: float(x)/10.0, range(1, 40))
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = analog.pwr_squelch_ff(thr, alpha)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
diff --git a/gr-analog/python/qa_quadrature_demod.py b/gr-analog/python/qa_quadrature_demod.py
index e38ea72a7d..0a92bb12a5 100755
--- a/gr-analog/python/qa_quadrature_demod.py
+++ b/gr-analog/python/qa_quadrature_demod.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import cmath
 
 class test_quadrature_demod(gr_unittest.TestCase):
@@ -47,9 +48,9 @@ class test_quadrature_demod(gr_unittest.TestCase):
 
         expected_result = [0,] + 199*[1.0]
 
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = analog.quadrature_demod_cf(gain)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
diff --git a/gr-analog/python/qa_rail_ff.py b/gr-analog/python/qa_rail_ff.py
index 5bcf01c6b7..58ac01d7a6 100755
--- a/gr-analog/python/qa_rail_ff.py
+++ b/gr-analog/python/qa_rail_ff.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 
 def clip(x, lo, hi):
     if(x < lo):
@@ -63,9 +64,9 @@ class test_rail(gr_unittest.TestCase):
         src_data = [-2, -1, -0.5, -0.25, 0, 0.25, 0.5, 1, 2]
         expected_result = map(lambda x: clip(x, lo, hi), src_data)
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = analog.rail_ff(lo, hi)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
diff --git a/gr-analog/python/qa_sig_source.py b/gr-analog/python/qa_sig_source.py
index bc48333ed1..0aa03c7402 100755
--- a/gr-analog/python/qa_sig_source.py
+++ b/gr-analog/python/qa_sig_source.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import math
 
 class test_sig_source(gr_unittest.TestCase):
@@ -36,8 +37,8 @@ class test_sig_source(gr_unittest.TestCase):
         tb = self.tb
         expected_result = (1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5)
         src1 = analog.sig_source_f(1e6, analog.GR_CONST_WAVE, 0, 1.5)
-        op = gr.head(gr.sizeof_float, 10)
-        dst1 = gr.vector_sink_f()
+        op = blocks.head(gr.sizeof_float, 10)
+        dst1 = blocks.vector_sink_f()
         tb.connect(src1, op)
         tb.connect(op, dst1)
         tb.run()
@@ -48,8 +49,8 @@ class test_sig_source(gr_unittest.TestCase):
         tb = self.tb
         expected_result = (1, 1, 1, 1)
         src1 = analog.sig_source_i(1e6, analog.GR_CONST_WAVE, 0, 1)
-        op = gr.head(gr.sizeof_int, 4)
-        dst1 = gr.vector_sink_i()
+        op = blocks.head(gr.sizeof_int, 4)
+        dst1 = blocks.vector_sink_i()
         tb.connect(src1, op)
         tb.connect(op, dst1)
         tb.run()
@@ -61,8 +62,8 @@ class test_sig_source(gr_unittest.TestCase):
         sqrt2 = math.sqrt(2) / 2
         expected_result = (0, sqrt2, 1, sqrt2, 0, -sqrt2, -1, -sqrt2, 0)
         src1 = analog.sig_source_f(8, analog.GR_SIN_WAVE, 1.0, 1.0)
-        op = gr.head(gr.sizeof_float, 9)
-        dst1 = gr.vector_sink_f()
+        op = blocks.head(gr.sizeof_float, 9)
+        dst1 = blocks.vector_sink_f()
         tb.connect(src1, op)
         tb.connect(op, dst1)
         tb.run()
@@ -74,8 +75,8 @@ class test_sig_source(gr_unittest.TestCase):
         sqrt2 = math.sqrt(2) / 2
         expected_result = (1, sqrt2, 0, -sqrt2, -1, -sqrt2, 0, sqrt2, 1)
         src1 = analog.sig_source_f(8, analog.GR_COS_WAVE, 1.0, 1.0)
-        op = gr.head(gr.sizeof_float, 9)
-        dst1 = gr.vector_sink_f()
+        op = blocks.head(gr.sizeof_float, 9)
+        dst1 = blocks.vector_sink_f()
         tb.connect(src1, op)
         tb.connect(op, dst1)
         tb.run()
@@ -86,8 +87,8 @@ class test_sig_source(gr_unittest.TestCase):
         tb = self.tb			#arg6 is a bit before -PI/2
         expected_result = (1j, 1j, 0, 0, 1, 1, 1+0j, 1+1j, 1j)
         src1 = analog.sig_source_c(8, analog.GR_SQR_WAVE, 1.0, 1.0)
-        op = gr.head(gr.sizeof_gr_complex, 9)
-        dst1 = gr.vector_sink_c()
+        op = blocks.head(gr.sizeof_gr_complex, 9)
+        dst1 = blocks.vector_sink_c()
         tb.connect(src1, op)
         tb.connect(op, dst1)
         tb.run()
@@ -99,8 +100,8 @@ class test_sig_source(gr_unittest.TestCase):
         expected_result = (1+.5j, .75+.75j, .5+1j, .25+.75j, 0+.5j,
                            .25+.25j, .5+0j, .75+.25j, 1+.5j)
         src1 = analog.sig_source_c(8, analog.GR_TRI_WAVE, 1.0, 1.0)
-        op = gr.head(gr.sizeof_gr_complex, 9)
-        dst1 = gr.vector_sink_c()
+        op = blocks.head(gr.sizeof_gr_complex, 9)
+        dst1 = blocks.vector_sink_c()
         tb.connect(src1, op)
         tb.connect(op, dst1)
         tb.run()
@@ -112,8 +113,8 @@ class test_sig_source(gr_unittest.TestCase):
         expected_result = (.5+.25j, .625+.375j, .75+.5j, .875+.625j,
                             0+.75j, .125+.875j, .25+1j, .375+.125j, .5+.25j)
         src1 = analog.sig_source_c(8, analog.GR_SAW_WAVE, 1.0, 1.0)
-        op = gr.head(gr.sizeof_gr_complex, 9)
-        dst1 = gr.vector_sink_c()
+        op = blocks.head(gr.sizeof_gr_complex, 9)
+        dst1 = blocks.vector_sink_c()
         tb.connect(src1, op)
         tb.connect(op, dst1)
         tb.run()
@@ -124,8 +125,8 @@ class test_sig_source(gr_unittest.TestCase):
         tb = self.tb
         expected_result = (0, 0, 0, 0, 1, 1, 1, 1, 0)
         src1 = analog.sig_source_f(8, analog.GR_SQR_WAVE, 1.0, 1.0)
-        op = gr.head(gr.sizeof_float, 9)
-        dst1 = gr.vector_sink_f()
+        op = blocks.head(gr.sizeof_float, 9)
+        dst1 = blocks.vector_sink_f()
         tb.connect(src1, op)
         tb.connect(op, dst1)
         tb.run()
@@ -136,8 +137,8 @@ class test_sig_source(gr_unittest.TestCase):
         tb = self.tb
         expected_result = (1, .75, .5, .25, 0, .25, .5, .75, 1)
         src1 = analog.sig_source_f(8, analog.GR_TRI_WAVE, 1.0, 1.0)
-        op = gr.head(gr.sizeof_float, 9)
-        dst1 = gr.vector_sink_f()
+        op = blocks.head(gr.sizeof_float, 9)
+        dst1 = blocks.vector_sink_f()
         tb.connect(src1, op)
         tb.connect(op, dst1)
         tb.run()
@@ -148,8 +149,8 @@ class test_sig_source(gr_unittest.TestCase):
         tb = self.tb
         expected_result = (.5, .625, .75, .875, 0, .125, .25, .375, .5)
         src1 = analog.sig_source_f(8, analog.GR_SAW_WAVE, 1.0, 1.0)
-        op = gr.head(gr.sizeof_float, 9)
-        dst1 = gr.vector_sink_f()
+        op = blocks.head(gr.sizeof_float, 9)
+        dst1 = blocks.vector_sink_f()
         tb.connect(src1, op)
         tb.connect(op, dst1)
         tb.run()
diff --git a/gr-analog/python/qa_simple_squelch.py b/gr-analog/python/qa_simple_squelch.py
index 9fa112864f..2bd88e1489 100755
--- a/gr-analog/python/qa_simple_squelch.py
+++ b/gr-analog/python/qa_simple_squelch.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 
 class test_simple_squelch(gr_unittest.TestCase):
 
@@ -50,9 +51,9 @@ class test_simple_squelch(gr_unittest.TestCase):
         thr = -25
 
         src_data = map(lambda x: float(x)/10.0, range(1, 40))
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = analog.simple_squelch_cc(thr, alpha)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
diff --git a/gr-analog/python/wfm_rcv_fmdet.py b/gr-analog/python/wfm_rcv_fmdet.py
index f3627d378d..b7cd1458fb 100644
--- a/gr-analog/python/wfm_rcv_fmdet.py
+++ b/gr-analog/python/wfm_rcv_fmdet.py
@@ -1,5 +1,5 @@
 #
-# Copyright 2005,2006,2012 Free Software Foundation, Inc.
+# Copyright 2005,2006,2012-2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -132,7 +132,7 @@ class wfm_rcv_fmdet(gr.hier_block2):
                                       stereo_rds_filter_coeffs)
 	    self.rds_carrier_generator = blocks.multiply_cc();
 	    self.rds_signal_generator = blocks.multiply_cc();
-	    self_rds_signal_processor = gr.null_sink(gr.sizeof_gr_complex);
+	    self_rds_signal_processor = blocks.null_sink(gr.sizeof_gr_complex);
 
             loop_bw = 2*math.pi/100.0
             max_freq = -2.0*math.pi*18990/audio_rate;
diff --git a/gr-analog/python/wfm_rcv_pll.py b/gr-analog/python/wfm_rcv_pll.py
index 7452de731f..282e2b14be 100644
--- a/gr-analog/python/wfm_rcv_pll.py
+++ b/gr-analog/python/wfm_rcv_pll.py
@@ -1,5 +1,5 @@
 #
-# Copyright 2005,2006,2012 Free Software Foundation, Inc.
+# Copyright 2005,2006,2012-2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -125,7 +125,7 @@ class wfm_rcv_pll(gr.hier_block2):
 
 	    self.rds_carrier_generator = blocks.multiply_cc();
 	    self.rds_signal_generator = blocks.multiply_cc();
-	    self_rds_signal_processor = gr.null_sink(gr.sizeof_gr_complex);
+	    self_rds_signal_processor = blocks.null_sink(gr.sizeof_gr_complex);
 
             loop_bw = 2*math.pi/100.0
             max_freq = -2.0*math.pi*18990/audio_rate;
diff --git a/gr-atsc/python/qa_atsc.py b/gr-atsc/python/qa_atsc.py
index 507bc8aa47..8601c87a68 100755
--- a/gr-atsc/python/qa_atsc.py
+++ b/gr-atsc/python/qa_atsc.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2006,2007 Free Software Foundation, Inc.
+# Copyright 2004,2006,2007,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -80,7 +80,7 @@ class vector_source_ts(gr.hier_block2):
             ts: MPEG transport stream. (sequence of ints in [0,255]; len(ts) % 188 == 0)
         """
 
-        src = gr.vector_source_b(pad_transport_stream(ts))
+        src = blocks.vector_source_b(pad_transport_stream(ts))
         s2v = blocks.stream_to_vector(gr.sizeof_char, atsc.sizeof_atsc_mpeg_packet)
 
 	gr.hier_block2.__init__(self, "vector_source_ts",
@@ -98,7 +98,7 @@ class vector_sink_ts(gr.hier_block2):
         """
 
         v2s = blocks.vector_to_stream(gr.sizeof_char, atsc.sizeof_atsc_mpeg_packet)
-        self.sink = gr.vector_sink_b()
+        self.sink = blocks.vector_sink_b()
 	gr.hier_block2.__init__(self, "vector_sink_ts",
 				v2s.input_signature(),
 				gr.io_signature(0, 0, 0))
diff --git a/gr-audio/examples/python/audio_to_file.py b/gr-audio/examples/python/audio_to_file.py
index 201ec90bf1..6a2cbcb12e 100755
--- a/gr-audio/examples/python/audio_to_file.py
+++ b/gr-audio/examples/python/audio_to_file.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007 Free Software Foundation, Inc.
+# Copyright 2004,2007,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -53,7 +53,7 @@ class my_top_block(gr.top_block):
         if options.nsamples is None:
             self.connect((src, 0), dst)
         else:
-            head = gr.head(gr.sizeof_float, int(options.nsamples))
+            head = blocks.head(gr.sizeof_float, int(options.nsamples))
             self.connect((src, 0), head, dst)
 
 
diff --git a/gr-audio/examples/python/dial_tone_wav.py b/gr-audio/examples/python/dial_tone_wav.py
index 91bf744c95..82f8cf331d 100755
--- a/gr-audio/examples/python/dial_tone_wav.py
+++ b/gr-audio/examples/python/dial_tone_wav.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2005,2007,2008,2012 Free Software Foundation, Inc.
+# Copyright 2004,2005,2007,2008,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -54,8 +54,8 @@ class my_top_block(gr.top_block):
 
         src0 = analog.sig_source_f(sample_rate, analog.GR_SIN_WAVE, 350, ampl)
         src1 = analog.sig_source_f(sample_rate, analog.GR_SIN_WAVE, 440, ampl)
-	head0 = gr.head(gr.sizeof_float, int(options.samples))
-	head1 = gr.head(gr.sizeof_float, int(options.samples))
+	head0 = blocks.head(gr.sizeof_float, int(options.samples))
+	head1 = blocks.head(gr.sizeof_float, int(options.samples))
 	dst = blocks.wavfile_sink(args[0], 2, int(options.sample_rate), 16)
 
         self.connect(src0, head0, (dst, 0))
diff --git a/gr-audio/examples/python/spectrum_inversion.py b/gr-audio/examples/python/spectrum_inversion.py
index 63d0c8cc8d..a02d6c5821 100755
--- a/gr-audio/examples/python/spectrum_inversion.py
+++ b/gr-audio/examples/python/spectrum_inversion.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2005,2007 Free Software Foundation, Inc.
+# Copyright 2004,2005,2007,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -54,7 +54,7 @@ class my_top_block(gr.top_block):
         dst = audio.sink (sample_rate, options.audio_output)
 
 	vec1 = [1, -1]
-	vsource = gr.vector_source_f(vec1, True)
+	vsource = blocks.vector_source_f(vec1, True)
 	multiply = blocks.multiply_ff()
 
 	self.connect(src, (multiply, 0))
diff --git a/gr-blocks/examples/metadata/file_metadata_sink.grc b/gr-blocks/examples/metadata/file_metadata_sink.grc
index 198b0725f9..1328fb7978 100644
--- a/gr-blocks/examples/metadata/file_metadata_sink.grc
+++ b/gr-blocks/examples/metadata/file_metadata_sink.grc
@@ -845,10 +845,10 @@
     </param>
   </block>
   <block>
-    <key>gr_head</key>
+    <key>blocks_head</key>
     <param>
       <key>id</key>
-      <value>gr_head_0</value>
+      <value>blocks_head_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -932,18 +932,18 @@
   </block>
   <connection>
     <source_block_id>gr_sig_source_x_0</source_block_id>
-    <sink_block_id>gr_head_0</sink_block_id>
+    <sink_block_id>blocks_head_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
     <source_block_id>uhd_usrp_source_0</source_block_id>
-    <sink_block_id>gr_head_0</sink_block_id>
+    <sink_block_id>blocks_head_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>gr_head_0</source_block_id>
+    <source_block_id>blocks_head_0</source_block_id>
     <sink_block_id>blocks_file_meta_sink_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
diff --git a/gr-blocks/examples/metadata/file_metadata_vector_sink.grc b/gr-blocks/examples/metadata/file_metadata_vector_sink.grc
index 05b7cbc922..ebc4812e56 100644
--- a/gr-blocks/examples/metadata/file_metadata_vector_sink.grc
+++ b/gr-blocks/examples/metadata/file_metadata_vector_sink.grc
@@ -84,10 +84,10 @@
     </param>
   </block>
   <block>
-    <key>gr_vector_source_x</key>
+    <key>blocks_vector_source_x</key>
     <param>
       <key>id</key>
-      <value>gr_vector_source_x_0</value>
+      <value>blocks_vector_source_x_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -119,10 +119,10 @@
     </param>
   </block>
   <block>
-    <key>gr_head</key>
+    <key>blocks_head</key>
     <param>
       <key>id</key>
-      <value>gr_head_0</value>
+      <value>blocks_head_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -205,13 +205,13 @@
     </param>
   </block>
   <connection>
-    <source_block_id>gr_vector_source_x_0</source_block_id>
-    <sink_block_id>gr_head_0</sink_block_id>
+    <source_block_id>blocks_vector_source_x_0</source_block_id>
+    <sink_block_id>blocks_head_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>gr_head_0</source_block_id>
+    <source_block_id>blocks_head_0</source_block_id>
     <sink_block_id>blocks_file_meta_sink_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
diff --git a/gr-blocks/examples/msg_passing/strobe.grc b/gr-blocks/examples/msg_passing/strobe.grc
index d9d4ce43cb..a918332ce8 100644
--- a/gr-blocks/examples/msg_passing/strobe.grc
+++ b/gr-blocks/examples/msg_passing/strobe.grc
@@ -90,10 +90,10 @@
     </param>
   </block>
   <block>
-    <key>gr_kludge_copy</key>
+    <key>blocks_copy</key>
     <param>
       <key>id</key>
-      <value>gr_kludge_copy_0</value>
+      <value>blocks_copy_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -252,14 +252,14 @@
     <sink_key>0</sink_key>
   </connection>
   <connection>
-    <source_block_id>gr_kludge_copy_0</source_block_id>
+    <source_block_id>blocks_copy_0</source_block_id>
     <sink_block_id>gr_tagged_stream_to_pdu_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
     <source_block_id>gr_pdu_to_tagged_stream_0</source_block_id>
-    <sink_block_id>gr_kludge_copy_0</sink_block_id>
+    <sink_block_id>blocks_copy_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/gr-blocks/examples/tags/test_file_tags.py b/gr-blocks/examples/tags/test_file_tags.py
index 92112325b2..758623de98 100755
--- a/gr-blocks/examples/tags/test_file_tags.py
+++ b/gr-blocks/examples/tags/test_file_tags.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -34,11 +34,11 @@ def main():
     data = scipy.arange(0, 32000, 1).tolist()
     trig = 100*[0,] + 100*[1,]
 
-    src = gr.vector_source_s(data, True)
-    trigger = gr.vector_source_s(trig, True)
+    src = blocks.vector_source_s(data, True)
+    trigger = blocks.vector_source_s(trig, True)
 
     thr = blocks.throttle(gr.sizeof_short, 10e3)
-    ann = gr.annotator_alltoall(1000000, gr.sizeof_short)
+    ann = blocks.annotator_alltoall(1000000, gr.sizeof_short)
     tagger = blocks..burst_tagger(gr.sizeof_short)
 
     fsnk = blocks.tagged_file_sink(gr.sizeof_short, 1)
diff --git a/gr-blocks/include/blocks/nop.h b/gr-blocks/include/blocks/nop.h
index b3135e1cc8..a75adad621 100644
--- a/gr-blocks/include/blocks/nop.h
+++ b/gr-blocks/include/blocks/nop.h
@@ -48,6 +48,9 @@ namespace gr {
       static sptr make(size_t sizeof_stream_item);
 
       virtual int nmsgs_received() const = 0;
+
+      virtual int  ctrlport_test() const = 0;
+      virtual void set_ctrlport_test(int x) = 0;
     };
 
   } /* namespace blocks */
diff --git a/gr-blocks/lib/CMakeLists.txt b/gr-blocks/lib/CMakeLists.txt
index 6e2b583308..f0dfcf4393 100644
--- a/gr-blocks/lib/CMakeLists.txt
+++ b/gr-blocks/lib/CMakeLists.txt
@@ -289,6 +289,10 @@ if(ENABLE_TESTING)
 
   list(APPEND test_gr_blocks_sources
     ${CMAKE_CURRENT_SOURCE_DIR}/test_gr_blocks.cc
+    ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_block.cc
+    ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_top_block.cc
+    ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_hier_block2.cc
+    ${CMAKE_CURRENT_SOURCE_DIR}/qa_gr_hier_block2_derived.cc
     ${CMAKE_CURRENT_SOURCE_DIR}/qa_blocks.cc
     ${CMAKE_CURRENT_SOURCE_DIR}/qa_block_tags.cc
     ${CMAKE_CURRENT_SOURCE_DIR}/qa_fxpt.cc
diff --git a/gr-blocks/lib/annotator_1to1_impl.cc b/gr-blocks/lib/annotator_1to1_impl.cc
index d3f4758684..e7f105fc02 100644
--- a/gr-blocks/lib/annotator_1to1_impl.cc
+++ b/gr-blocks/lib/annotator_1to1_impl.cc
@@ -82,8 +82,8 @@ namespace gr {
       }
 
       // Storing the current noutput_items as the value to the "noutput_items" key
-      pmt::pmt_t srcid = pmt::pmt_string_to_symbol(str.str());
-      pmt::pmt_t key = pmt::pmt_string_to_symbol("seq");
+      pmt::pmt_t srcid = pmt::string_to_symbol(str.str());
+      pmt::pmt_t key = pmt::string_to_symbol("seq");
 
       // Work does nothing to the data stream; just copy all inputs to outputs
       // Adds a new tag when the number of items read is a multiple of d_when
@@ -95,7 +95,7 @@ namespace gr {
         // specifically designed to test the 1-to-1 propagation policy.
         for(int i = 0; i < std::min(noutputs, ninputs); i++) {
           if(abs_N % d_when == 0) {
-            pmt::pmt_t value = pmt::pmt_from_uint64(d_tag_counter++);
+            pmt::pmt_t value = pmt::from_uint64(d_tag_counter++);
             add_item_tag(i, abs_N, key, value, srcid);
           }
 
diff --git a/gr-blocks/lib/annotator_alltoall_impl.cc b/gr-blocks/lib/annotator_alltoall_impl.cc
index 5af1a9c18e..4909f7f820 100644
--- a/gr-blocks/lib/annotator_alltoall_impl.cc
+++ b/gr-blocks/lib/annotator_alltoall_impl.cc
@@ -83,8 +83,8 @@ namespace gr {
       }
 
       // Source ID and key for any tag that might get applied from this block
-      pmt::pmt_t srcid = pmt::pmt_string_to_symbol(str.str());
-      pmt::pmt_t key = pmt::pmt_string_to_symbol("seq");
+      pmt::pmt_t srcid = pmt::string_to_symbol(str.str());
+      pmt::pmt_t key = pmt::string_to_symbol("seq");
 
       // Work does nothing to the data stream; just copy all inputs to
       // outputs Adds a new tag when the number of items read is a
@@ -95,7 +95,7 @@ namespace gr {
       for(int j = 0; j < noutput_items; j++) {
         for(int i = 0; i < noutputs; i++) {
           if(abs_N % d_when == 0) {
-            pmt::pmt_t value = pmt::pmt_from_uint64(d_tag_counter++);
+            pmt::pmt_t value = pmt::from_uint64(d_tag_counter++);
             add_item_tag(i, abs_N, key, value, srcid);
           }
 
diff --git a/gr-blocks/lib/annotator_raw_impl.cc b/gr-blocks/lib/annotator_raw_impl.cc
index 1b92523089..8d30ba16de 100644
--- a/gr-blocks/lib/annotator_raw_impl.cc
+++ b/gr-blocks/lib/annotator_raw_impl.cc
@@ -58,7 +58,7 @@ namespace gr {
       gruel::scoped_lock l(d_mutex);
 
       gr_tag_t tag;
-      tag.srcid = pmt::pmt_intern(name());
+      tag.srcid = pmt::intern(name());
       tag.key = key;
       tag.value = val;
       tag.offset = offset;
diff --git a/gr-blocks/lib/nop_impl.cc b/gr-blocks/lib/nop_impl.cc
index 766f07e2b8..387eda0baf 100644
--- a/gr-blocks/lib/nop_impl.cc
+++ b/gr-blocks/lib/nop_impl.cc
@@ -74,5 +74,27 @@ namespace gr {
       return noutput_items;
     }
 
+    void
+    nop_impl::setup_rpc()
+    {
+#ifdef GR_CTRLPORT
+      d_rpc_vars.push_back(
+        rpcbasic_sptr(new rpcbasic_register_get<nop, int>(
+          alias(), "test",
+          &nop::ctrlport_test,
+          pmt::mp(-256), pmt::mp(255), pmt::mp(0),
+          "", "Simple testing variable",
+          RPC_PRIVLVL_MIN, DISPNULL)));
+
+      d_rpc_vars.push_back(
+        rpcbasic_sptr(new rpcbasic_register_set<nop, int>(
+          alias(), "test",
+          &nop::set_ctrlport_test,
+          pmt::mp(-256), pmt::mp(255), pmt::mp(0),
+          "", "Simple testing variable",
+          RPC_PRIVLVL_MIN, DISPNULL)));
+#endif /* GR_CTRLPORT */
+    }
+
   } /* namespace blocks */
 } /* namespace gr */
diff --git a/gr-blocks/lib/nop_impl.h b/gr-blocks/lib/nop_impl.h
index b236abb7aa..e01e8fc9d9 100644
--- a/gr-blocks/lib/nop_impl.h
+++ b/gr-blocks/lib/nop_impl.h
@@ -32,6 +32,7 @@ namespace gr {
     {
     protected:
       int d_nmsgs_recvd;
+      int d_ctrlport_test;
 
       // Method that just counts any received messages.
       void count_received_msgs(pmt::pmt_t msg);
@@ -40,8 +41,13 @@ namespace gr {
       nop_impl(size_t sizeof_stream_item);
       ~nop_impl();
 
+      void setup_rpc();
+
       int nmsgs_received() const { return d_nmsgs_recvd; }
 
+      int  ctrlport_test() const { return d_ctrlport_test; }
+      void set_ctrlport_test(int x) { d_ctrlport_test = x; }
+
       int general_work(int noutput_items,
                        gr_vector_int &ninput_items,
                        gr_vector_const_void_star &input_items,
diff --git a/gr-blocks/lib/qa_block_tags.cc b/gr-blocks/lib/qa_block_tags.cc
index 93edc4695a..9e89ce11be 100644
--- a/gr-blocks/lib/qa_block_tags.cc
+++ b/gr-blocks/lib/qa_block_tags.cc
@@ -27,12 +27,12 @@
 #include <qa_block_tags.h>
 #include <gr_block.h>
 #include <gr_top_block.h>
-#include <gr_null_source.h>
-#include <gr_null_sink.h>
-#include <gr_head.h>
+#include <blocks/null_source.h>
+#include <blocks/null_sink.h>
+#include <blocks/head.h>
 #include <blocks/annotator_alltoall.h>
 #include <blocks/annotator_1to1.h>
-#include <gr_keep_one_in_n.h>
+#include <blocks/keep_one_in_n.h>
 #include <filter/firdes.h>
 #include <gr_tags.h>
 
@@ -55,9 +55,9 @@ qa_block_tags::t0()
 {
   unsigned int N = 1000;
   gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(int)));
-  gr_block_sptr head (gr_make_head(sizeof(int), N));
-  gr_block_sptr snk (gr_make_null_sink(sizeof(int)));
+  gr_block_sptr src (gr::blocks::null_source::make(sizeof(int)));
+  gr_block_sptr head (gr::blocks::head::make(sizeof(int), N));
+  gr_block_sptr snk (gr::blocks::null_sink::make(sizeof(int)));
 
   tb->connect(src, 0, head, 0);
   tb->connect(head, 0, snk, 0);
@@ -81,15 +81,15 @@ qa_block_tags::t1()
 {
   int N = 40000;
   gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(int)));
-  gr_block_sptr head (gr_make_head(sizeof(int), N));
+  gr_block_sptr src (gr::blocks::null_source::make(sizeof(int)));
+  gr_block_sptr head (gr::blocks::head::make(sizeof(int), N));
   gr::blocks::annotator_alltoall::sptr ann0(gr::blocks::annotator_alltoall::make(10000, sizeof(int)));
   gr::blocks::annotator_alltoall::sptr ann1(gr::blocks::annotator_alltoall::make(10000, sizeof(int)));
   gr::blocks::annotator_alltoall::sptr ann2(gr::blocks::annotator_alltoall::make(10000, sizeof(int)));
   gr::blocks::annotator_alltoall::sptr ann3(gr::blocks::annotator_alltoall::make(10000, sizeof(int)));
   gr::blocks::annotator_alltoall::sptr ann4(gr::blocks::annotator_alltoall::make(10000, sizeof(int)));
-  gr_block_sptr snk0 (gr_make_null_sink(sizeof(int)));
-  gr_block_sptr snk1 (gr_make_null_sink(sizeof(int)));
+  gr_block_sptr snk0 (gr::blocks::null_sink::make(sizeof(int)));
+  gr_block_sptr snk1 (gr::blocks::null_sink::make(sizeof(int)));
 
   tb->connect(src, 0, head, 0);
   tb->connect(head, 0, ann0, 0);
@@ -121,38 +121,38 @@ qa_block_tags::t1()
   str2 << ann2->name() << ann2->unique_id();
 
   pmt_t expected_tags3[8];
-  expected_tags3[0] = mp(pmt_from_uint64(0),     mp(str1.str()), mp("seq"), mp(0));
-  expected_tags3[1] = mp(pmt_from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
-  expected_tags3[2] = mp(pmt_from_uint64(10000), mp(str1.str()), mp("seq"), mp(1));
-  expected_tags3[3] = mp(pmt_from_uint64(10000), mp(str0.str()), mp("seq"), mp(2));
-  expected_tags3[4] = mp(pmt_from_uint64(20000), mp(str1.str()), mp("seq"), mp(2));
-  expected_tags3[5] = mp(pmt_from_uint64(20000), mp(str0.str()), mp("seq"), mp(4));
-  expected_tags3[6] = mp(pmt_from_uint64(30000), mp(str1.str()), mp("seq"), mp(3));
-  expected_tags3[7] = mp(pmt_from_uint64(30000), mp(str0.str()), mp("seq"), mp(6));
+  expected_tags3[0] = mp(pmt::from_uint64(0),     mp(str1.str()), mp("seq"), mp(0));
+  expected_tags3[1] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
+  expected_tags3[2] = mp(pmt::from_uint64(10000), mp(str1.str()), mp("seq"), mp(1));
+  expected_tags3[3] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(2));
+  expected_tags3[4] = mp(pmt::from_uint64(20000), mp(str1.str()), mp("seq"), mp(2));
+  expected_tags3[5] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(4));
+  expected_tags3[6] = mp(pmt::from_uint64(30000), mp(str1.str()), mp("seq"), mp(3));
+  expected_tags3[7] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(6));
 
   pmt_t expected_tags4[8];
-  expected_tags4[0] = mp(pmt_from_uint64(0),     mp(str2.str()), mp("seq"), mp(0));
-  expected_tags4[1] = mp(pmt_from_uint64(0),     mp(str0.str()), mp("seq"), mp(1));
-  expected_tags4[2] = mp(pmt_from_uint64(10000), mp(str2.str()), mp("seq"), mp(1));
-  expected_tags4[3] = mp(pmt_from_uint64(10000), mp(str0.str()), mp("seq"), mp(3));
-  expected_tags4[4] = mp(pmt_from_uint64(20000), mp(str2.str()), mp("seq"), mp(2));
-  expected_tags4[5] = mp(pmt_from_uint64(20000), mp(str0.str()), mp("seq"), mp(5));
-  expected_tags4[6] = mp(pmt_from_uint64(30000), mp(str2.str()), mp("seq"), mp(3));
-  expected_tags4[7] = mp(pmt_from_uint64(30000), mp(str0.str()), mp("seq"), mp(7));
+  expected_tags4[0] = mp(pmt::from_uint64(0),     mp(str2.str()), mp("seq"), mp(0));
+  expected_tags4[1] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(1));
+  expected_tags4[2] = mp(pmt::from_uint64(10000), mp(str2.str()), mp("seq"), mp(1));
+  expected_tags4[3] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(3));
+  expected_tags4[4] = mp(pmt::from_uint64(20000), mp(str2.str()), mp("seq"), mp(2));
+  expected_tags4[5] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(5));
+  expected_tags4[6] = mp(pmt::from_uint64(30000), mp(str2.str()), mp("seq"), mp(3));
+  expected_tags4[7] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(7));
 
   std::cout << std::endl << "qa_block_tags::t1" << std::endl;
 
   // For annotator 3, we know it gets tags from ann0 and ann1, test this
   for(size_t i = 0; i < tags3.size(); i++) {
     std::cout << "tags3[" << i << "] = " << tags3[i] << "\t\t" << expected_tags3[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt_write_string(tags3[i]), pmt_write_string(expected_tags3[i]));
+    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags3[i]), pmt::write_string(expected_tags3[i]));
   }
 
   // For annotator 4, we know it gets tags from ann0 and ann2, test this
   std::cout << std::endl;
   for(size_t i = 0; i < tags4.size(); i++) {
     std::cout << "tags4[" << i << "] = " << tags4[i] << "\t\t" << expected_tags4[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt_write_string(tags4[i]), pmt_write_string(expected_tags4[i]));
+    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags4[i]), pmt::write_string(expected_tags4[i]));
   }
 #endif
 }
@@ -162,16 +162,16 @@ qa_block_tags::t2 ()
 {
   int N = 40000;
   gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(int)));
-  gr_block_sptr head (gr_make_head(sizeof(int), N));
+  gr_block_sptr src (gr::blocks::null_source::make(sizeof(int)));
+  gr_block_sptr head (gr::blocks::head::make(sizeof(int), N));
   gr::blocks::annotator_alltoall::sptr ann0(gr::blocks::annotator_alltoall::make(10000, sizeof(int)));
   gr::blocks::annotator_alltoall::sptr ann1(gr::blocks::annotator_alltoall::make(10000, sizeof(int)));
   gr::blocks::annotator_alltoall::sptr ann2(gr::blocks::annotator_alltoall::make(10000, sizeof(int)));
   gr::blocks::annotator_alltoall::sptr ann3(gr::blocks::annotator_alltoall::make(10000, sizeof(int)));
   gr::blocks::annotator_alltoall::sptr ann4(gr::blocks::annotator_alltoall::make(10000, sizeof(int)));
-  gr_block_sptr snk0 (gr_make_null_sink(sizeof(int)));
-  gr_block_sptr snk1 (gr_make_null_sink(sizeof(int)));
-  gr_block_sptr snk2 (gr_make_null_sink(sizeof(int)));
+  gr_block_sptr snk0 (gr::blocks::null_sink::make(sizeof(int)));
+  gr_block_sptr snk1 (gr::blocks::null_sink::make(sizeof(int)));
+  gr_block_sptr snk2 (gr::blocks::null_sink::make(sizeof(int)));
 
   tb->connect(src, 0, head, 0);
   tb->connect(head, 0, ann0, 0);
@@ -211,32 +211,32 @@ qa_block_tags::t2 ()
   str1 << ann1->name() << ann1->unique_id();
 
   pmt_t expected_tags2[12];
-  expected_tags2[0] = mp(pmt_from_uint64(0),     mp(str1.str()), mp("seq"), mp(0));
-  expected_tags2[1] = mp(pmt_from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
-  expected_tags2[2] = mp(pmt_from_uint64(0),     mp(str0.str()), mp("seq"), mp(1));
-  expected_tags2[3] = mp(pmt_from_uint64(10000), mp(str1.str()), mp("seq"), mp(3));
-  expected_tags2[4] = mp(pmt_from_uint64(10000), mp(str0.str()), mp("seq"), mp(2));
-  expected_tags2[5] = mp(pmt_from_uint64(10000), mp(str0.str()), mp("seq"), mp(3));
-  expected_tags2[6] = mp(pmt_from_uint64(20000), mp(str1.str()), mp("seq"), mp(6));
-  expected_tags2[7] = mp(pmt_from_uint64(20000), mp(str0.str()), mp("seq"), mp(4));
-  expected_tags2[8] = mp(pmt_from_uint64(20000), mp(str0.str()), mp("seq"), mp(5));
-  expected_tags2[9] = mp(pmt_from_uint64(30000), mp(str1.str()), mp("seq"), mp(9));
-  expected_tags2[10] = mp(pmt_from_uint64(30000), mp(str0.str()), mp("seq"), mp(6));
-  expected_tags2[11] = mp(pmt_from_uint64(30000), mp(str0.str()), mp("seq"), mp(7));
+  expected_tags2[0] = mp(pmt::from_uint64(0),     mp(str1.str()), mp("seq"), mp(0));
+  expected_tags2[1] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
+  expected_tags2[2] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(1));
+  expected_tags2[3] = mp(pmt::from_uint64(10000), mp(str1.str()), mp("seq"), mp(3));
+  expected_tags2[4] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(2));
+  expected_tags2[5] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(3));
+  expected_tags2[6] = mp(pmt::from_uint64(20000), mp(str1.str()), mp("seq"), mp(6));
+  expected_tags2[7] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(4));
+  expected_tags2[8] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(5));
+  expected_tags2[9] = mp(pmt::from_uint64(30000), mp(str1.str()), mp("seq"), mp(9));
+  expected_tags2[10] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(6));
+  expected_tags2[11] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(7));
 
   pmt_t expected_tags4[12];
-  expected_tags4[0] = mp(pmt_from_uint64(0),     mp(str1.str()), mp("seq"), mp(2));
-  expected_tags4[1] = mp(pmt_from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
-  expected_tags4[2] = mp(pmt_from_uint64(0),     mp(str0.str()), mp("seq"), mp(1));
-  expected_tags4[3] = mp(pmt_from_uint64(10000), mp(str1.str()), mp("seq"), mp(5));
-  expected_tags4[4] = mp(pmt_from_uint64(10000), mp(str0.str()), mp("seq"), mp(2));
-  expected_tags4[5] = mp(pmt_from_uint64(10000), mp(str0.str()), mp("seq"), mp(3));
-  expected_tags4[6] = mp(pmt_from_uint64(20000), mp(str1.str()), mp("seq"), mp(8));
-  expected_tags4[7] = mp(pmt_from_uint64(20000), mp(str0.str()), mp("seq"), mp(4));
-  expected_tags4[8] = mp(pmt_from_uint64(20000), mp(str0.str()), mp("seq"), mp(5));
-  expected_tags4[9] = mp(pmt_from_uint64(30000), mp(str1.str()), mp("seq"), mp(11));
-  expected_tags4[10] = mp(pmt_from_uint64(30000), mp(str0.str()), mp("seq"), mp(6));
-  expected_tags4[11] = mp(pmt_from_uint64(30000), mp(str0.str()), mp("seq"), mp(7));
+  expected_tags4[0] = mp(pmt::from_uint64(0),     mp(str1.str()), mp("seq"), mp(2));
+  expected_tags4[1] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
+  expected_tags4[2] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(1));
+  expected_tags4[3] = mp(pmt::from_uint64(10000), mp(str1.str()), mp("seq"), mp(5));
+  expected_tags4[4] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(2));
+  expected_tags4[5] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(3));
+  expected_tags4[6] = mp(pmt::from_uint64(20000), mp(str1.str()), mp("seq"), mp(8));
+  expected_tags4[7] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(4));
+  expected_tags4[8] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(5));
+  expected_tags4[9] = mp(pmt::from_uint64(30000), mp(str1.str()), mp("seq"), mp(11));
+  expected_tags4[10] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(6));
+  expected_tags4[11] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(7));
 
   std::cout << std::endl << "qa_block_tags::t2" << std::endl;
 
@@ -246,13 +246,13 @@ qa_block_tags::t2 ()
   // inconceivable for ann3 to have it wrong.
   for(size_t i = 0; i < tags2.size(); i++) {
     std::cout << "tags2[" << i << "] = " << tags2[i] << "\t\t" << expected_tags2[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt_write_string(tags2[i]), pmt_write_string(expected_tags2[i]));
+    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags2[i]), pmt::write_string(expected_tags2[i]));
   }
 
   std::cout << std::endl;
   for(size_t i = 0; i < tags4.size(); i++) {
     std::cout << "tags2[" << i << "] = " << tags4[i] << "\t\t" << expected_tags4[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt_write_string(tags4[i]), pmt_write_string(expected_tags4[i]));
+    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags4[i]), pmt::write_string(expected_tags4[i]));
   }
 #endif
 }
@@ -263,15 +263,15 @@ qa_block_tags::t3()
 {
   int N = 40000;
   gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(int)));
-  gr_block_sptr head (gr_make_head(sizeof(int), N));
+  gr_block_sptr src (gr::blocks::null_source::make(sizeof(int)));
+  gr_block_sptr head (gr::blocks::head::make(sizeof(int), N));
   gr::blocks::annotator_1to1::sptr ann0 (gr::blocks::annotator_1to1::make(10000, sizeof(int)));
   gr::blocks::annotator_alltoall::sptr ann1 (gr::blocks::annotator_alltoall::make(10000, sizeof(int)));
   gr::blocks::annotator_alltoall::sptr ann2 (gr::blocks::annotator_alltoall::make(10000, sizeof(int)));
   gr::blocks::annotator_1to1::sptr ann3 (gr::blocks::annotator_1to1::make(10000, sizeof(int)));
   gr::blocks::annotator_1to1::sptr ann4 (gr::blocks::annotator_1to1::make(10000, sizeof(int)));
-  gr_block_sptr snk0 (gr_make_null_sink(sizeof(int)));
-  gr_block_sptr snk1 (gr_make_null_sink(sizeof(int)));
+  gr_block_sptr snk0 (gr::blocks::null_sink::make(sizeof(int)));
+  gr_block_sptr snk1 (gr::blocks::null_sink::make(sizeof(int)));
 
   tb->connect(src, 0, head, 0);
   tb->connect(head, 0, ann0, 0);
@@ -305,38 +305,38 @@ qa_block_tags::t3()
   str2 << ann2->name() << ann2->unique_id();
 
   pmt_t expected_tags3[8];
-  expected_tags3[0] = mp(pmt_from_uint64(0),     mp(str1.str()), mp("seq"), mp(0));
-  expected_tags3[1] = mp(pmt_from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
-  expected_tags3[2] = mp(pmt_from_uint64(10000), mp(str1.str()), mp("seq"), mp(1));
-  expected_tags3[3] = mp(pmt_from_uint64(10000), mp(str0.str()), mp("seq"), mp(2));
-  expected_tags3[4] = mp(pmt_from_uint64(20000), mp(str1.str()), mp("seq"), mp(2));
-  expected_tags3[5] = mp(pmt_from_uint64(20000), mp(str0.str()), mp("seq"), mp(4));
-  expected_tags3[6] = mp(pmt_from_uint64(30000), mp(str1.str()), mp("seq"), mp(3));
-  expected_tags3[7] = mp(pmt_from_uint64(30000), mp(str0.str()), mp("seq"), mp(6));
+  expected_tags3[0] = mp(pmt::from_uint64(0),     mp(str1.str()), mp("seq"), mp(0));
+  expected_tags3[1] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
+  expected_tags3[2] = mp(pmt::from_uint64(10000), mp(str1.str()), mp("seq"), mp(1));
+  expected_tags3[3] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(2));
+  expected_tags3[4] = mp(pmt::from_uint64(20000), mp(str1.str()), mp("seq"), mp(2));
+  expected_tags3[5] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(4));
+  expected_tags3[6] = mp(pmt::from_uint64(30000), mp(str1.str()), mp("seq"), mp(3));
+  expected_tags3[7] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(6));
 
   pmt_t expected_tags4[8];
-  expected_tags4[0] = mp(pmt_from_uint64(0),     mp(str2.str()), mp("seq"), mp(0));
-  expected_tags4[1] = mp(pmt_from_uint64(0),     mp(str0.str()), mp("seq"), mp(1));
-  expected_tags4[2] = mp(pmt_from_uint64(10000), mp(str2.str()), mp("seq"), mp(1));
-  expected_tags4[3] = mp(pmt_from_uint64(10000), mp(str0.str()), mp("seq"), mp(3));
-  expected_tags4[4] = mp(pmt_from_uint64(20000), mp(str2.str()), mp("seq"), mp(2));
-  expected_tags4[5] = mp(pmt_from_uint64(20000), mp(str0.str()), mp("seq"), mp(5));
-  expected_tags4[6] = mp(pmt_from_uint64(30000), mp(str2.str()), mp("seq"), mp(3));
-  expected_tags4[7] = mp(pmt_from_uint64(30000), mp(str0.str()), mp("seq"), mp(7));
+  expected_tags4[0] = mp(pmt::from_uint64(0),     mp(str2.str()), mp("seq"), mp(0));
+  expected_tags4[1] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(1));
+  expected_tags4[2] = mp(pmt::from_uint64(10000), mp(str2.str()), mp("seq"), mp(1));
+  expected_tags4[3] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(3));
+  expected_tags4[4] = mp(pmt::from_uint64(20000), mp(str2.str()), mp("seq"), mp(2));
+  expected_tags4[5] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(5));
+  expected_tags4[6] = mp(pmt::from_uint64(30000), mp(str2.str()), mp("seq"), mp(3));
+  expected_tags4[7] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(7));
 
   std::cout << std::endl << "qa_block_tags::t3" << std::endl;
 
   // For annotator 3, we know it gets tags from ann0 and ann1, test this
   for(size_t i = 0; i < tags3.size(); i++) {
     std::cout << "tags3[" << i << "] = " << tags3[i] << "\t\t" << expected_tags3[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt_write_string(tags3[i]), pmt_write_string(expected_tags3[i]));
+    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags3[i]), pmt::write_string(expected_tags3[i]));
   }
 
   // For annotator 4, we know it gets tags from ann0 and ann2, test this
   std::cout << std::endl;
   for(size_t i = 0; i < tags4.size(); i++) {
     std::cout << "tags4[" << i << "] = " << tags4[i] << "\t\t" << expected_tags4[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt_write_string(tags4[i]), pmt_write_string(expected_tags4[i]));
+    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags4[i]), pmt::write_string(expected_tags4[i]));
   }
 #endif
 }
@@ -347,13 +347,13 @@ qa_block_tags::t4()
 {
   int N = 40000;
   gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(int)));
-  gr_block_sptr head (gr_make_head(sizeof(int), N));
+  gr_block_sptr src (gr::blocks::null_source::make(sizeof(int)));
+  gr_block_sptr head (gr::blocks::head::make(sizeof(int), N));
   gr::blocks::annotator_1to1::sptr ann0(gr::blocks::annotator_1to1::make(10000, sizeof(int)));
   gr::blocks::annotator_1to1::sptr ann1(gr::blocks::annotator_1to1::make(10000, sizeof(int)));
   gr::blocks::annotator_1to1::sptr ann2(gr::blocks::annotator_1to1::make(10000, sizeof(int)));
-  gr_block_sptr snk0 (gr_make_null_sink(sizeof(int)));
-  gr_block_sptr snk1 (gr_make_null_sink(sizeof(int)));
+  gr_block_sptr snk0 (gr::blocks::null_sink::make(sizeof(int)));
+  gr_block_sptr snk1 (gr::blocks::null_sink::make(sizeof(int)));
 
   // using 1-to-1 tag propagation without having equal number of
   // ins and outs. Make sure this works; will just exit run early.
@@ -376,15 +376,15 @@ qa_block_tags::t5()
 {
   int N = 40000;
   gr_top_block_sptr tb = gr_make_top_block("top");
-  gr_block_sptr src (gr_make_null_source(sizeof(float)));
-  gr_block_sptr head (gr_make_head(sizeof(float), N));
+  gr_block_sptr src (gr::blocks::null_source::make(sizeof(float)));
+  gr_block_sptr head (gr::blocks::head::make(sizeof(float), N));
   gr::blocks::annotator_alltoall::sptr ann0(gr::blocks::annotator_alltoall::make(10000, sizeof(float)));
   gr::blocks::annotator_alltoall::sptr ann1(gr::blocks::annotator_alltoall::make(10000, sizeof(float)));
   gr::blocks::annotator_alltoall::sptr ann2(gr::blocks::annotator_alltoall::make(1000,  sizeof(float)));
-  gr_block_sptr snk0 (gr_make_null_sink(sizeof(float)));
+  gr_block_sptr snk0 (gr::blocks::null_sink::make(sizeof(float)));
 
   // Rate change blocks
-  gr_keep_one_in_n_sptr dec10 (gr_make_keep_one_in_n(sizeof(float), 10));
+  gr::blocks::keep_one_in_n::sptr dec10(gr::blocks::keep_one_in_n::make(sizeof(float), 10));
 
   tb->connect(src,  0, head, 0);
   tb->connect(head, 0, ann0, 0);
@@ -413,22 +413,22 @@ qa_block_tags::t5()
   str2 << ann2->name() << ann2->unique_id();
 
   pmt_t expected_tags1[5];
-  expected_tags1[0] = mp(pmt_from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
-  expected_tags1[1] = mp(pmt_from_uint64(10000), mp(str0.str()), mp("seq"), mp(1));
-  expected_tags1[2] = mp(pmt_from_uint64(20000), mp(str0.str()), mp("seq"), mp(2));
-  expected_tags1[3] = mp(pmt_from_uint64(30000), mp(str0.str()), mp("seq"), mp(3));
+  expected_tags1[0] = mp(pmt::from_uint64(0),     mp(str0.str()), mp("seq"), mp(0));
+  expected_tags1[1] = mp(pmt::from_uint64(10000), mp(str0.str()), mp("seq"), mp(1));
+  expected_tags1[2] = mp(pmt::from_uint64(20000), mp(str0.str()), mp("seq"), mp(2));
+  expected_tags1[3] = mp(pmt::from_uint64(30000), mp(str0.str()), mp("seq"), mp(3));
 
   pmt_t expected_tags2[10];
-  expected_tags2[0] = mp(pmt_from_uint64(0),    mp(str1.str()), mp("seq"), mp(0));
-  expected_tags2[1] = mp(pmt_from_uint64(0),    mp(str0.str()), mp("seq"), mp(0));
-  expected_tags2[2] = mp(pmt_from_uint64(1000), mp(str1.str()), mp("seq"), mp(1));
-  expected_tags2[3] = mp(pmt_from_uint64(1000), mp(str0.str()), mp("seq"), mp(1));
-  expected_tags2[4] = mp(pmt_from_uint64(2000), mp(str1.str()), mp("seq"), mp(2));
-  expected_tags2[5] = mp(pmt_from_uint64(2000), mp(str0.str()), mp("seq"), mp(2));
-  expected_tags2[6] = mp(pmt_from_uint64(3000), mp(str1.str()), mp("seq"), mp(3));
-  expected_tags2[7] = mp(pmt_from_uint64(3000), mp(str0.str()), mp("seq"), mp(3));
-  expected_tags2[8] = mp(pmt_from_uint64(4000), mp(str1.str()), mp("seq"), mp(4));
-  expected_tags2[9] = mp(pmt_from_uint64(4000), mp(str0.str()), mp("seq"), mp(4));
+  expected_tags2[0] = mp(pmt::from_uint64(0),    mp(str1.str()), mp("seq"), mp(0));
+  expected_tags2[1] = mp(pmt::from_uint64(0),    mp(str0.str()), mp("seq"), mp(0));
+  expected_tags2[2] = mp(pmt::from_uint64(1000), mp(str1.str()), mp("seq"), mp(1));
+  expected_tags2[3] = mp(pmt::from_uint64(1000), mp(str0.str()), mp("seq"), mp(1));
+  expected_tags2[4] = mp(pmt::from_uint64(2000), mp(str1.str()), mp("seq"), mp(2));
+  expected_tags2[5] = mp(pmt::from_uint64(2000), mp(str0.str()), mp("seq"), mp(2));
+  expected_tags2[6] = mp(pmt::from_uint64(3000), mp(str1.str()), mp("seq"), mp(3));
+  expected_tags2[7] = mp(pmt::from_uint64(3000), mp(str0.str()), mp("seq"), mp(3));
+  expected_tags2[8] = mp(pmt::from_uint64(4000), mp(str1.str()), mp("seq"), mp(4));
+  expected_tags2[9] = mp(pmt::from_uint64(4000), mp(str0.str()), mp("seq"), mp(4));
 
   std::cout << std::endl << "qa_block_tags::t5" << std::endl;
 
@@ -436,7 +436,7 @@ qa_block_tags::t5()
   std::cout << "tags1.size(): " << tags1.size() << std::endl;
   for(size_t i = 0; i < tags1.size(); i++) {
     std::cout << "tags1[" << i << "] = " << tags1[i] << "\t\t" << expected_tags1[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt_write_string(tags1[i]), pmt_write_string(expected_tags1[i]));
+    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags1[i]), pmt::write_string(expected_tags1[i]));
   }
 
   // annotator 2 gets tags from annotators 0 and 1
@@ -444,7 +444,7 @@ qa_block_tags::t5()
   std::cout << "tags2.size(): " << tags2.size() << std::endl;
   for(size_t i = 0; i < tags2.size(); i++) {
     std::cout << "tags2[" << i << "] = " << tags2[i] << "\t\t" << expected_tags2[i] << std::endl;
-    CPPUNIT_ASSERT_EQUAL(pmt_write_string(tags2[i]), pmt_write_string(expected_tags2[i]));
+    CPPUNIT_ASSERT_EQUAL(pmt::write_string(tags2[i]), pmt::write_string(expected_tags2[i]));
   }
 #endif
 }
diff --git a/gr-blocks/lib/qa_gr_block.cc b/gr-blocks/lib/qa_gr_block.cc
new file mode 100644
index 0000000000..7f4a01bbd0
--- /dev/null
+++ b/gr-blocks/lib/qa_gr_block.cc
@@ -0,0 +1,89 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004.2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qa_gr_block.h>
+#include <gr_block.h>
+#include <gr_io_signature.h>
+#include <blocks/null_sink.h>
+#include <blocks/null_source.h>
+
+
+// ----------------------------------------------------------------
+
+
+void
+qa_gr_block::t0 ()
+{
+  // test creation of sources
+  gr_block_sptr src1(gr::blocks::null_source::make(sizeof (int)));
+  CPPUNIT_ASSERT_EQUAL(std::string("null_source"), src1->name ());
+  CPPUNIT_ASSERT_EQUAL(0, src1->input_signature()->max_streams ());
+  CPPUNIT_ASSERT_EQUAL(1, src1->output_signature()->min_streams ());
+  CPPUNIT_ASSERT_EQUAL(1, src1->output_signature()->max_streams ());
+  CPPUNIT_ASSERT_EQUAL((int) sizeof(int),
+                       src1->output_signature()->sizeof_stream_item (0));
+
+  gr_block_sptr src2(gr::blocks::null_source::make(sizeof(short)));
+  CPPUNIT_ASSERT_EQUAL(std::string ("null_source"), src2->name ());
+  CPPUNIT_ASSERT_EQUAL(0, src2->input_signature()->max_streams ());
+  CPPUNIT_ASSERT_EQUAL(1, src2->output_signature()->min_streams ());
+  CPPUNIT_ASSERT_EQUAL(1, src2->output_signature()->max_streams ());
+  CPPUNIT_ASSERT_EQUAL((int)sizeof (short),
+                       src2->output_signature()->sizeof_stream_item (0));
+}
+
+
+void
+qa_gr_block::t1 ()
+{
+  // test creation of sinks
+  gr_block_sptr dst1 (gr::blocks::null_sink::make (sizeof (int)));
+  CPPUNIT_ASSERT_EQUAL (std::string ("null_sink"), dst1->name ());
+  CPPUNIT_ASSERT_EQUAL (1, dst1->input_signature()->min_streams ());
+  CPPUNIT_ASSERT_EQUAL (1, dst1->input_signature()->max_streams ());
+  CPPUNIT_ASSERT_EQUAL ((int) sizeof (int),
+			dst1->input_signature()->sizeof_stream_item (0));
+
+  CPPUNIT_ASSERT_EQUAL (0, dst1->output_signature()->max_streams ());
+
+  gr_block_sptr dst2 (gr::blocks::null_sink::make (sizeof (short)));
+  CPPUNIT_ASSERT_EQUAL (std::string ("null_sink"), dst2->name ());
+  CPPUNIT_ASSERT_EQUAL (1, dst2->input_signature()->min_streams ());
+  CPPUNIT_ASSERT_EQUAL (1, dst2->input_signature()->max_streams ());
+  CPPUNIT_ASSERT_EQUAL ((int) sizeof (short),
+			dst2->input_signature()->sizeof_stream_item (0));
+  CPPUNIT_ASSERT_EQUAL (0, dst2->output_signature()->max_streams ());
+}
+
+void
+qa_gr_block::t2 ()
+{
+}
+
+void
+qa_gr_block::t3 ()
+{
+}
diff --git a/gr-blocks/lib/qa_gr_block.h b/gr-blocks/lib/qa_gr_block.h
new file mode 100644
index 0000000000..14c7c40d1f
--- /dev/null
+++ b/gr-blocks/lib/qa_gr_block.h
@@ -0,0 +1,48 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2004 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_QA_GR_BLOCK_H
+#define INCLUDED_QA_GR_BLOCK_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestCase.h>
+#include <stdexcept>
+
+class qa_gr_block : public CppUnit::TestCase {
+
+  CPPUNIT_TEST_SUITE (qa_gr_block);
+  CPPUNIT_TEST (t0);
+  CPPUNIT_TEST (t1);
+  CPPUNIT_TEST (t2);
+  CPPUNIT_TEST (t3);
+  CPPUNIT_TEST_SUITE_END ();
+
+ private:
+  void t0 ();
+  void t1 ();
+  void t2 ();
+  void t3 ();
+
+};
+
+
+#endif /* INCLUDED_QA_GR_BLOCK_H */
diff --git a/gr-blocks/lib/qa_gr_flowgraph.cc b/gr-blocks/lib/qa_gr_flowgraph.cc
new file mode 100644
index 0000000000..1a3006039b
--- /dev/null
+++ b/gr-blocks/lib/qa_gr_flowgraph.cc
@@ -0,0 +1,245 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qa_gr_flowgraph.h>
+#include <gr_flowgraph.h>
+#include <blocks/nop.h>
+#include <blocks/null_source.h>
+#include <blocks/null_sink.h>
+
+void qa_gr_flowgraph::t0()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  CPPUNIT_ASSERT(fg);
+}
+
+void qa_gr_flowgraph::t1_connect()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr nop1 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop2 = gr::blocks::nop::make(sizeof(int));
+
+  fg->connect(nop1, 0, nop2, 0);
+}
+
+void qa_gr_flowgraph::t2_connect_invalid_src_port_neg()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr nop1 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop2 = gr::blocks::nop::make(sizeof(int));
+
+  CPPUNIT_ASSERT_THROW(fg->connect(nop1, -1, nop2, 0), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t3_connect_src_port_exceeds()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  CPPUNIT_ASSERT_THROW(fg->connect(src, 1, dst, 0), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t4_connect_invalid_dst_port_neg()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr nop1 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop2 = gr::blocks::nop::make(sizeof(int));
+
+  CPPUNIT_ASSERT_THROW(fg->connect(nop1, 0, nop2, -1), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t5_connect_dst_port_exceeds()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  CPPUNIT_ASSERT_THROW(fg->connect(src, 0, dst, 1), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t6_connect_dst_in_use()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr src1 = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr src2 = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  fg->connect(src1, 0, dst, 0);
+  CPPUNIT_ASSERT_THROW(fg->connect(src2, 0, dst, 0), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t7_connect_one_src_two_dst()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr dst1 = gr::blocks::null_sink::make(sizeof(int));
+  gr_block_sptr dst2 = gr::blocks::null_sink::make(sizeof(int));
+
+  fg->connect(src, 0, dst1, 0);
+  fg->connect(src, 0, dst2, 0);
+}
+
+void qa_gr_flowgraph::t8_connect_type_mismatch()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr nop1 = gr::blocks::nop::make(sizeof(char));
+  gr_block_sptr nop2 = gr::blocks::nop::make(sizeof(int));
+
+  CPPUNIT_ASSERT_THROW(fg->connect(nop1, 0, nop2, 0), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t9_disconnect()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr nop1 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop2 = gr::blocks::nop::make(sizeof(int));
+
+  fg->connect(nop1, 0, nop2, 0);
+  fg->disconnect(nop1, 0, nop2, 0);
+}
+
+void qa_gr_flowgraph::t10_disconnect_unconnected_block()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr nop1 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop2 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop3 = gr::blocks::nop::make(sizeof(int));
+
+  fg->connect(nop1, 0, nop2, 0);
+  CPPUNIT_ASSERT_THROW(fg->disconnect(nop1, 0, nop3, 0), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t11_disconnect_unconnected_port()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr nop1 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop2 = gr::blocks::nop::make(sizeof(int));
+
+  fg->connect(nop1, 0, nop2, 0);
+  CPPUNIT_ASSERT_THROW(fg->disconnect(nop1, 0, nop2, 1), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t12_validate()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr nop1 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop2 = gr::blocks::nop::make(sizeof(int));
+
+  fg->connect(nop1, 0, nop2, 0);
+  fg->validate();
+}
+
+void qa_gr_flowgraph::t13_validate_missing_input_assignment()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr nop1 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop2 = gr::blocks::nop::make(sizeof(int));
+
+  fg->connect(nop1, 0, nop2, 0);
+  fg->connect(nop1, 0, nop2, 2);
+  CPPUNIT_ASSERT_THROW(fg->validate(), std::runtime_error);
+}
+
+void qa_gr_flowgraph::t14_validate_missing_output_assignment()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr nop1 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop2 = gr::blocks::nop::make(sizeof(int));
+
+  fg->connect(nop1, 0, nop2, 0);
+  fg->connect(nop1, 2, nop2, 1);
+  CPPUNIT_ASSERT_THROW(fg->validate(), std::runtime_error);
+}
+
+void qa_gr_flowgraph::t15_clear()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr nop1 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop2 = gr::blocks::nop::make(sizeof(int));
+
+  fg->connect(nop1, 0, nop2, 0);
+
+  CPPUNIT_ASSERT(fg->edges().size() == 1);
+  CPPUNIT_ASSERT(fg->calc_used_blocks().size() == 2);
+
+  fg->clear();
+
+  CPPUNIT_ASSERT(fg->edges().size() == 0);
+  CPPUNIT_ASSERT(fg->calc_used_blocks().size() == 0);
+}
+
+void qa_gr_flowgraph::t16_partition()
+{
+  gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+  gr_block_sptr nop11 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop12 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop13 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop14 = gr::blocks::nop::make(sizeof(int));
+
+  gr_block_sptr nop21 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop22 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop23 = gr::blocks::nop::make(sizeof(int));
+
+  gr_block_sptr nop31 = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr nop32 = gr::blocks::nop::make(sizeof(int));
+
+  // Build disjoint graph #1
+  fg->connect(nop11, 0, nop12, 0);
+  fg->connect(nop12, 0, nop13, 0);
+  fg->connect(nop13, 0, nop14, 0);
+
+  // Build disjoint graph #2
+  fg->connect(nop21, 0, nop22, 0);
+  fg->connect(nop22, 0, nop23, 0);
+
+  // Build disjoint graph #3
+  fg->connect(nop31, 0, nop32, 0);
+
+  std::vector<gr_basic_block_vector_t> graphs = fg->partition();
+
+  CPPUNIT_ASSERT(graphs.size() == 3);
+  CPPUNIT_ASSERT(graphs[0].size() == 4);
+  CPPUNIT_ASSERT(graphs[1].size() == 3);
+  CPPUNIT_ASSERT(graphs[2].size() == 2);
+}
diff --git a/gr-blocks/lib/qa_gr_flowgraph.h b/gr-blocks/lib/qa_gr_flowgraph.h
new file mode 100644
index 0000000000..2c2686f71b
--- /dev/null
+++ b/gr-blocks/lib/qa_gr_flowgraph.h
@@ -0,0 +1,75 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_QA_GR_FLOWGRAPH_H
+#define INCLUDED_QA_GR_FLOWGRAPH_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestCase.h>
+#include <stdexcept>
+
+class qa_gr_flowgraph : public CppUnit::TestCase
+{
+  CPPUNIT_TEST_SUITE(qa_gr_flowgraph);
+
+  CPPUNIT_TEST(t0);
+  CPPUNIT_TEST(t1_connect);
+  CPPUNIT_TEST(t2_connect_invalid_src_port_neg);
+  CPPUNIT_TEST(t3_connect_src_port_exceeds);
+  CPPUNIT_TEST(t4_connect_invalid_dst_port_neg);
+  CPPUNIT_TEST(t5_connect_dst_port_exceeds);
+  CPPUNIT_TEST(t6_connect_dst_in_use);
+  CPPUNIT_TEST(t7_connect_one_src_two_dst);
+  CPPUNIT_TEST(t8_connect_type_mismatch);
+  CPPUNIT_TEST(t9_disconnect);
+  CPPUNIT_TEST(t10_disconnect_unconnected_block);
+  CPPUNIT_TEST(t11_disconnect_unconnected_port);
+  CPPUNIT_TEST(t12_validate);
+  CPPUNIT_TEST(t13_validate_missing_input_assignment);
+  CPPUNIT_TEST(t14_validate_missing_output_assignment);
+  CPPUNIT_TEST(t15_clear);
+  CPPUNIT_TEST(t16_partition);
+
+  CPPUNIT_TEST_SUITE_END();
+
+private:
+
+  void t0();
+  void t1_connect();
+  void t2_connect_invalid_src_port_neg();
+  void t3_connect_src_port_exceeds();
+  void t4_connect_invalid_dst_port_neg();
+  void t5_connect_dst_port_exceeds();
+  void t6_connect_dst_in_use();
+  void t7_connect_one_src_two_dst();
+  void t8_connect_type_mismatch();
+  void t9_disconnect();
+  void t10_disconnect_unconnected_block();
+  void t11_disconnect_unconnected_port();
+  void t12_validate();
+  void t13_validate_missing_input_assignment();
+  void t14_validate_missing_output_assignment();
+  void t15_clear();
+  void t16_partition();
+};
+
+#endif /* INCLUDED_QA_GR_FLOWGRAPH_H */
diff --git a/gr-blocks/lib/qa_gr_hier_block2.cc b/gr-blocks/lib/qa_gr_hier_block2.cc
new file mode 100644
index 0000000000..a3d599039c
--- /dev/null
+++ b/gr-blocks/lib/qa_gr_hier_block2.cc
@@ -0,0 +1,55 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2008,2009 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qa_gr_hier_block2.h>
+#include <gr_hier_block2.h>
+#include <gr_io_signature.h>
+
+void qa_gr_hier_block2::test_make()
+{
+    gr_hier_block2_sptr src1(gr_make_hier_block2("test",
+						 gr_make_io_signature(1, 1, 1 * sizeof(int)),
+						 gr_make_io_signature(1, 1, 1 * sizeof(int))));
+
+    CPPUNIT_ASSERT(src1);
+    CPPUNIT_ASSERT_EQUAL(std::string("test"), src1->name());
+
+    CPPUNIT_ASSERT_EQUAL(1 * (int) sizeof(int),
+			 src1->input_signature()->sizeof_stream_item(0));
+
+    CPPUNIT_ASSERT_EQUAL(1, src1->input_signature()->min_streams());
+    CPPUNIT_ASSERT_EQUAL(1, src1->input_signature()->max_streams());
+
+
+    CPPUNIT_ASSERT_EQUAL(1 * (int) sizeof(int),
+			 src1->output_signature()->sizeof_stream_item(0));
+
+    CPPUNIT_ASSERT_EQUAL(1, src1->output_signature()->min_streams());
+    CPPUNIT_ASSERT_EQUAL(1, src1->output_signature()->max_streams());
+
+}
+
+
diff --git a/gr-blocks/lib/qa_gr_hier_block2.h b/gr-blocks/lib/qa_gr_hier_block2.h
new file mode 100644
index 0000000000..653cd27251
--- /dev/null
+++ b/gr-blocks/lib/qa_gr_hier_block2.h
@@ -0,0 +1,42 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_QA_GR_HIER_BLOCK2_H
+#define INCLUDED_QA_GR_HIER_BLOCK2_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestCase.h>
+#include <stdexcept>
+
+class qa_gr_hier_block2 : public CppUnit::TestCase
+{
+    CPPUNIT_TEST_SUITE(qa_gr_hier_block2);
+
+    CPPUNIT_TEST(test_make);
+
+    CPPUNIT_TEST_SUITE_END();
+
+private:
+    void test_make();
+};
+
+#endif /* INCLUDED_QA_GR_HIER_BLOCK2_H */
diff --git a/gr-blocks/lib/qa_gr_hier_block2_derived.cc b/gr-blocks/lib/qa_gr_hier_block2_derived.cc
new file mode 100644
index 0000000000..eb747d32cc
--- /dev/null
+++ b/gr-blocks/lib/qa_gr_hier_block2_derived.cc
@@ -0,0 +1,87 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2008,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qa_gr_hier_block2_derived.h>
+#include <gr_top_block.h>
+#include <gr_io_signature.h>
+#include <blocks/null_source.h>
+#include <blocks/null_sink.h>
+#include <blocks/head.h>
+#include <blocks/copy.h>
+
+// Declare a test C++ hierarchical block
+
+class gr_derived_block;
+typedef boost::shared_ptr<gr_derived_block> gr_derived_block_sptr;
+gr_derived_block_sptr gr_make_derived_block();
+
+class gr_derived_block : public gr_hier_block2
+{
+private:
+  friend gr_derived_block_sptr gr_make_derived_block();
+  gr_derived_block();
+
+public:
+  ~gr_derived_block();
+};
+
+
+gr_derived_block_sptr
+gr_make_derived_block()
+{
+  return gnuradio::get_initial_sptr(new gr_derived_block());
+}
+
+gr_derived_block::gr_derived_block()
+  : gr_hier_block2("gr_derived_block",
+		   gr_make_io_signature(1, 1, sizeof(int)), // Input signature
+		   gr_make_io_signature(1, 1, sizeof(int))) // Output signature
+{
+  gr_block_sptr copy(gr::blocks::copy::make(sizeof(int)));
+
+  connect(self(), 0, copy, 0);
+  connect(copy, 0, self(), 0);
+}
+
+gr_derived_block::~gr_derived_block()
+{
+}
+
+void qa_gr_hier_block2_derived::test_1()
+{
+  gr_top_block_sptr     tb(gr_make_top_block("test"));
+
+  gr_block_sptr         src(gr::blocks::null_source::make(sizeof(int)));
+  gr_block_sptr         head(gr::blocks::head::make(sizeof(int), 1000));
+  gr_derived_block_sptr blk(gr_make_derived_block());
+  gr_block_sptr         dst(gr::blocks::null_sink::make(sizeof(int)));
+
+  tb->connect(src,  0, head, 0);
+  tb->connect(head, 0, blk,  0);
+  tb->connect(blk,  0, dst,  0);
+
+  tb->run();
+}
diff --git a/gr-blocks/lib/qa_gr_hier_block2_derived.h b/gr-blocks/lib/qa_gr_hier_block2_derived.h
new file mode 100644
index 0000000000..8e0a1880ce
--- /dev/null
+++ b/gr-blocks/lib/qa_gr_hier_block2_derived.h
@@ -0,0 +1,41 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2008 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_QA_GR_HIER_BLOCK2_DERIVED_H
+#define INCLUDED_QA_GR_HIER_BLOCK2_DERIVED_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestCase.h>
+#include <stdexcept>
+
+// Declare a QA test case
+class qa_gr_hier_block2_derived : public CppUnit::TestCase
+{
+  CPPUNIT_TEST_SUITE(qa_gr_hier_block2_derived);
+  CPPUNIT_TEST(test_1);
+  CPPUNIT_TEST_SUITE_END();
+
+private:
+  void test_1();
+};
+
+#endif /* INCLUDED_QA_GR_HIER_BLOCK2_DERIVED_H */
diff --git a/gr-blocks/lib/qa_gr_top_block.cc b/gr-blocks/lib/qa_gr_top_block.cc
new file mode 100644
index 0000000000..9833ed7f8b
--- /dev/null
+++ b/gr-blocks/lib/qa_gr_top_block.cc
@@ -0,0 +1,285 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qa_gr_top_block.h>
+#include <gr_top_block.h>
+#include <blocks/head.h>
+#include <blocks/nop.h>
+#include <blocks/null_source.h>
+#include <blocks/null_sink.h>
+#include <iostream>
+
+#define VERBOSE 0
+
+void qa_gr_top_block::t0()
+{
+  if (VERBOSE) std::cout << "qa_gr_top_block::t0()\n";
+
+  gr_top_block_sptr tb = gr_make_top_block("top");
+
+  CPPUNIT_ASSERT(tb);
+}
+
+void qa_gr_top_block::t1_run()
+{
+  if (VERBOSE) std::cout << "qa_gr_top_block::t1()\n";
+
+  gr_top_block_sptr tb = gr_make_top_block("top");
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr head = gr::blocks::head::make(sizeof(int), 100000);
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  tb->connect(src, 0, head, 0);
+  tb->connect(head, 0, dst, 0);
+  tb->run();
+}
+
+void qa_gr_top_block::t2_start_stop_wait()
+{
+  if (VERBOSE) std::cout << "qa_gr_top_block::t2()\n";
+
+  gr_top_block_sptr tb = gr_make_top_block("top");
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr head = gr::blocks::head::make(sizeof(int), 100000);
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  tb->connect(src, 0, head, 0);
+  tb->connect(head, 0, dst, 0);
+
+  tb->start();
+  tb->stop();
+  tb->wait();
+}
+
+void qa_gr_top_block::t3_lock_unlock()
+{
+  if (VERBOSE) std::cout << "qa_gr_top_block::t3()\n";
+
+  gr_top_block_sptr tb = gr_make_top_block("top");
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  tb->connect(src, 0, dst, 0);
+
+  tb->start();
+
+  tb->lock();
+  tb->unlock();
+
+  tb->stop();
+  tb->wait();
+}
+
+void qa_gr_top_block::t4_reconfigure()
+{
+  if (VERBOSE) std::cout << "qa_gr_top_block::t4()\n";
+
+  gr_top_block_sptr tb = gr_make_top_block("top");
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr head = gr::blocks::head::make(sizeof(int), 100000);
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  // Start infinite flowgraph
+  tb->connect(src, 0, dst, 0);
+  tb->start();
+
+  // Reconfigure with gr_head in the middle
+  tb->lock();
+  tb->disconnect(src, 0, dst, 0);
+  tb->connect(src, 0, head, 0);
+  tb->connect(head, 0, dst, 0);
+  tb->unlock();
+
+  // Wait for flowgraph to end on its own
+  tb->wait();
+}
+
+
+void qa_gr_top_block::t5_max_noutputs()
+{
+  if (VERBOSE) std::cout << "qa_gr_top_block::t5()\n";
+
+  gr_top_block_sptr tb = gr_make_top_block("top");
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr head = gr::blocks::head::make(sizeof(int), 100000);
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  // Start infinite flowgraph
+  tb->connect(src, 0, head, 0);
+  tb->connect(head, 0, dst, 0);
+  tb->start(100);
+  tb->wait();
+}
+
+void qa_gr_top_block::t6_reconfig_max_noutputs()
+{
+  if (VERBOSE) std::cout << "qa_gr_top_block::t6()\n";
+
+  gr_top_block_sptr tb = gr_make_top_block("top");
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr head = gr::blocks::head::make(sizeof(int), 100000);
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  // Start infinite flowgraph
+  tb->connect(src, 0, dst, 0);
+  tb->start(100);
+
+  // Reconfigure with gr_head in the middle
+  tb->lock();
+  tb->disconnect(src, 0, dst, 0);
+  tb->connect(src, 0, head, 0);
+  tb->connect(head, 0, dst, 0);
+  tb->set_max_noutput_items(1000);
+  head->set_max_noutput_items(500);
+  tb->unlock();
+
+  // Wait for flowgraph to end on its own
+  tb->wait();
+}
+
+void qa_gr_top_block::t7_max_noutputs_per_block()
+{
+  if (VERBOSE) std::cout << "qa_gr_top_block::t7()\n";
+
+  gr_top_block_sptr tb = gr_make_top_block("top");
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr head = gr::blocks::head::make(sizeof(int), 100000);
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  head->set_max_noutput_items(100);
+
+  // Start infinite flowgraph
+  tb->connect(src, 0, head, 0);
+  tb->connect(head, 0, dst, 0);
+  tb->start();
+  tb->wait();
+}
+
+void qa_gr_top_block::t8_reconfig_max_noutputs_per_block()
+{
+  if (VERBOSE) std::cout << "qa_gr_top_block::t8()\n";
+
+  gr_top_block_sptr tb = gr_make_top_block("top");
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr head = gr::blocks::head::make(sizeof(int), 100000);
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  head->set_max_noutput_items(99);
+
+  // Start infinite flowgraph
+  tb->connect(src, 0, dst, 0);
+  tb->start(201);
+
+  // Reconfigure with gr_head in the middle
+  tb->lock();
+  tb->disconnect(src, 0, dst, 0);
+  tb->connect(src, 0, head, 0);
+  tb->connect(head, 0, dst, 0);
+  tb->set_max_noutput_items(1023);
+  head->set_max_noutput_items(513);
+  tb->unlock();
+
+  // Wait for flowgraph to end on its own
+  tb->wait();
+}
+
+void qa_gr_top_block::t9_max_output_buffer()
+{
+  if (VERBOSE) std::cout << "qa_gr_top_block::t9()\n";
+
+  gr_top_block_sptr tb = gr_make_top_block("top");
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr head = gr::blocks::head::make(sizeof(int), 100000);
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  head->set_max_output_buffer(1024);
+
+  // Start infinite flowgraph
+  tb->connect(src, 0, head, 0);
+  tb->connect(head, 0, dst, 0);
+  tb->start();
+  tb->wait();
+}
+
+void qa_gr_top_block::t10_reconfig_max_output_buffer()
+{
+  if (VERBOSE) std::cout << "qa_gr_top_block::t10()\n";
+
+  gr_top_block_sptr tb = gr_make_top_block("top");
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr_block_sptr head = gr::blocks::head::make(sizeof(int), 100000);
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  head->set_max_output_buffer(1000);
+
+  // Start infinite flowgraph
+  tb->connect(src, 0, dst, 0);
+  tb->start(201);
+
+  // Reconfigure with gr_head in the middle
+  tb->lock();
+  gr_block_sptr nop = gr::blocks::nop::make(sizeof(int));
+  nop->set_max_output_buffer(4000);
+  tb->disconnect(src, 0, dst, 0);
+  tb->connect(src, 0, head, 0);
+  tb->connect(head, 0, nop, 0);
+  tb->connect(nop, 0, dst, 0);
+  tb->unlock();
+
+  // Wait for flowgraph to end on its own
+  tb->wait();
+}
+
+void qa_gr_top_block::t11_set_block_affinity()
+{
+  gr_top_block_sptr tb = gr_make_top_block("top");
+  gr_block_sptr src (gr::blocks::null_source::make(sizeof(float)));
+  gr_block_sptr snk (gr::blocks::null_sink::make(sizeof(float)));
+
+  std::vector<unsigned int> set(1, 0), ret;
+  src->set_processor_affinity(set);
+
+  tb->connect(src, 0, snk, 0);
+  tb->start();
+  tb->stop();
+  tb->wait();
+
+  ret = src->processor_affinity();
+
+  // We only set the core affinity to 0 because we always know at
+  // least one thread core exists to use.
+  CPPUNIT_ASSERT_EQUAL(set[0], ret[0]);
+}
diff --git a/gr-blocks/lib/qa_gr_top_block.h b/gr-blocks/lib/qa_gr_top_block.h
new file mode 100644
index 0000000000..634eeab1f8
--- /dev/null
+++ b/gr-blocks/lib/qa_gr_top_block.h
@@ -0,0 +1,66 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_QA_GR_TOP_BLOCK_H
+#define INCLUDED_QA_GR_TOP_BLOCK_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestCase.h>
+#include <stdexcept>
+
+class qa_gr_top_block : public CppUnit::TestCase
+{
+  CPPUNIT_TEST_SUITE(qa_gr_top_block);
+
+  CPPUNIT_TEST(t0);
+  CPPUNIT_TEST(t1_run);
+  CPPUNIT_TEST(t2_start_stop_wait);
+  CPPUNIT_TEST(t3_lock_unlock);
+  CPPUNIT_TEST(t4_reconfigure);  // triggers 'join never returns' bug
+  CPPUNIT_TEST(t5_max_noutputs);
+  CPPUNIT_TEST(t6_reconfig_max_noutputs);
+  CPPUNIT_TEST(t7_max_noutputs_per_block);
+  CPPUNIT_TEST(t8_reconfig_max_noutputs_per_block);
+  CPPUNIT_TEST(t9_max_output_buffer);
+  CPPUNIT_TEST(t10_reconfig_max_output_buffer);
+  CPPUNIT_TEST(t11_set_block_affinity);
+
+  CPPUNIT_TEST_SUITE_END();
+
+private:
+
+  void t0();
+  void t1_run();
+  void t2_start_stop_wait();
+  void t3_lock_unlock();
+  void t4_reconfigure();
+  void t5_max_noutputs();
+  void t6_reconfig_max_noutputs();
+  void t7_max_noutputs_per_block();
+  void t8_reconfig_max_noutputs_per_block();
+  void t9_max_output_buffer();
+  void t10_reconfig_max_output_buffer();
+  void t11_set_block_affinity();
+
+};
+
+#endif /* INCLUDED_QA_GR_TOP_BLOCK_H */
diff --git a/gr-blocks/lib/qa_set_msg_handler.cc b/gr-blocks/lib/qa_set_msg_handler.cc
new file mode 100644
index 0000000000..cfb990f0c4
--- /dev/null
+++ b/gr-blocks/lib/qa_set_msg_handler.cc
@@ -0,0 +1,78 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2011,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <qa_set_msg_handler.h>
+#include <gr_top_block.h>
+#include <blocks/head.h>
+#include <blocks/null_source.h>
+#include <blocks/null_sink.h>
+#include <blocks/nop.h>
+#include <gruel/msg_passing.h>
+#include <iostream>
+#include <boost/thread/thread.hpp>
+
+
+#define VERBOSE 0
+
+/*
+ * The gr::block::nop block has been instrumented so that it counts
+ * the number of messages sent to it. We use this feature to confirm
+ * that gr::blocks::nop's call to set_msg_handler is working correctly.
+ */
+
+void qa_set_msg_handler::t0()
+{
+  static const int NMSGS = 10;
+
+  if (VERBOSE) std::cout << "qa_set_msg_handler::t0()\n";
+
+  gr_top_block_sptr tb = gr_make_top_block("top");
+
+  gr_block_sptr src = gr::blocks::null_source::make(sizeof(int));
+  gr::blocks::nop::sptr nop = gr::blocks::nop::make(sizeof(int));
+  gr_block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+  tb->connect(src, 0, nop, 0);
+  tb->connect(nop, 0, dst, 0);
+
+  // Must start graph before sending messages
+  tb->start();
+
+  // Send them...
+  pmt::pmt_t port(pmt::intern("port"));
+  for (int i = 0; i < NMSGS; i++){
+    send(nop, port, pmt::mp(pmt::mp("example-msg"), pmt::mp(i)));
+  }
+
+  // Give the messages a chance to be processed
+  boost::this_thread::sleep(boost::posix_time::milliseconds(100));
+
+  tb->stop();
+  tb->wait();
+
+  // Confirm that the nop block received the right number of messages.
+  CPPUNIT_ASSERT_EQUAL(NMSGS, nop->nmsgs_received());
+}
diff --git a/gr-blocks/lib/qa_set_msg_handler.h b/gr-blocks/lib/qa_set_msg_handler.h
new file mode 100644
index 0000000000..60277a12cc
--- /dev/null
+++ b/gr-blocks/lib/qa_set_msg_handler.h
@@ -0,0 +1,43 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2007,2011 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_QA_SET_MSG_HANDLER_H
+#define INCLUDED_QA_SET_MSG_HANDLER_H
+
+#include <cppunit/extensions/HelperMacros.h>
+#include <cppunit/TestCase.h>
+#include <stdexcept>
+
+class qa_set_msg_handler : public CppUnit::TestCase
+{
+  CPPUNIT_TEST_SUITE(qa_set_msg_handler);
+
+  CPPUNIT_TEST(t0);
+
+  CPPUNIT_TEST_SUITE_END();
+
+private:
+
+  void t0();
+};
+
+#endif /* INCLUDED_QA_SET_MSG_HANDLER_H */
diff --git a/gr-blocks/python/qa_add_mult_div_sub.py b/gr-blocks/python/qa_add_mult_div_sub.py
index 0aca03d3fd..6d48a6c389 100755
--- a/gr-blocks/python/qa_add_mult_div_sub.py
+++ b/gr-blocks/python/qa_add_mult_div_sub.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 
 class test_add_mult_div_sub(gr_unittest.TestCase):
 
@@ -33,9 +33,9 @@ class test_add_mult_div_sub(gr_unittest.TestCase):
 
     def help_ii(self, src_data, exp_data, op):
         for s in zip(range(len(src_data)), src_data):
-            src = gr.vector_source_i(s[1])
+            src = blocks.vector_source_i(s[1])
             self.tb.connect(src, (op, s[0]))
-        dst = gr.vector_sink_i()
+        dst = blocks.vector_sink_i()
         self.tb.connect(op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -43,9 +43,9 @@ class test_add_mult_div_sub(gr_unittest.TestCase):
 
     def help_ss(self, src_data, exp_data, op):
         for s in zip(range(len(src_data)), src_data):
-            src = gr.vector_source_s(s[1])
+            src = blocks.vector_source_s(s[1])
             self.tb.connect(src, (op, s[0]))
-        dst = gr.vector_sink_s()
+        dst = blocks.vector_sink_s()
         self.tb.connect(op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -53,9 +53,9 @@ class test_add_mult_div_sub(gr_unittest.TestCase):
 
     def help_ff(self, src_data, exp_data, op):
         for s in zip(range(len(src_data)), src_data):
-            src = gr.vector_source_f(s[1])
+            src = blocks.vector_source_f(s[1])
             self.tb.connect(src, (op, s[0]))
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -63,9 +63,9 @@ class test_add_mult_div_sub(gr_unittest.TestCase):
 
     def help_cc(self, src_data, exp_data, op):
         for s in zip(range(len(src_data)), src_data):
-            src = gr.vector_source_c(s[1])
+            src = blocks.vector_source_c(s[1])
             self.tb.connect(src, (op, s[0]))
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -77,28 +77,28 @@ class test_add_mult_div_sub(gr_unittest.TestCase):
         src1_data = (1,  2, 3, 4, 5)
         src2_data = (8, -3, 4, 8, 2)
         expected_result = (9, -1, 7, 12, 7)
-        op = blocks_swig.add_ss()
+        op = blocks.add_ss()
         self.help_ss((src1_data, src2_data), expected_result, op)
 
     def test_add_ii(self):
         src1_data = (1,  2, 3, 4, 5)
         src2_data = (8, -3, 4, 8, 2)
         expected_result = (9, -1, 7, 12, 7)
-        op = blocks_swig.add_ii()
+        op = blocks.add_ii()
         self.help_ii((src1_data, src2_data), expected_result, op)
 
     def test_add_ff(self):
         src1_data = (1.0,  2.0, 3.0, 4.0, 5.0)
         src2_data = (8.0, -3.0, 4.0, 8.0, 2.0)
         expected_result = (9.0, -1.0, 7.0, 12.0, 7.0)
-        op = blocks_swig.add_ff()
+        op = blocks.add_ff()
         self.help_ff((src1_data, src2_data), expected_result, op)
 
     def test_add_cc(self):
         src1_data = (1+1j,  2+2j, 3+3j, 4+4j, 5+5j)
         src2_data = (8+8j, -3-3j, 4+4j, 8+8j, 2+2j)
         expected_result = (9+9j, -1-1j, 7+7j, 12+12j, 7+7j)
-        op = blocks_swig.add_cc()
+        op = blocks.add_cc()
         self.help_cc((src1_data, src2_data), expected_result, op)
 
     # add_const_XX
@@ -106,25 +106,25 @@ class test_add_mult_div_sub(gr_unittest.TestCase):
     def test_add_const_ss(self):
         src_data = (1, 2, 3, 4, 5)
         expected_result = (6, 7, 8, 9, 10)
-        op = blocks_swig.add_const_ss(5)
+        op = blocks.add_const_ss(5)
         self.help_ss((src_data,), expected_result, op)
 
     def test_add_const_ii(self):
         src_data = (1, 2, 3, 4, 5)
         expected_result = (6, 7, 8, 9, 10)
-        op = blocks_swig.add_const_ii(5)
+        op = blocks.add_const_ii(5)
         self.help_ii((src_data,), expected_result, op)
 
     def test_add_const_ff(self):
         src_data = (1, 2, 3, 4, 5)
         expected_result = (6, 7, 8, 9, 10)
-        op = blocks_swig.add_const_ff(5)
+        op = blocks.add_const_ff(5)
         self.help_ff((src_data,), expected_result, op)
 
     def test_add_const_cc(self):
         src_data = (1, 2, 3, 4, 5)
         expected_result = (1+5j, 2+5j, 3+5j, 4+5j, 5+5j)
-        op = blocks_swig.add_const_cc(5j)
+        op = blocks.add_const_cc(5j)
         self.help_cc((src_data,), expected_result, op)
 
     # multiply_XX
@@ -133,7 +133,7 @@ class test_add_mult_div_sub(gr_unittest.TestCase):
         src1_data = (1,  2, 3, 4, 5)
         src2_data = (8, -3, 4, 8, 2)
         expected_result = (8, -6, 12, 32, 10)
-        op = blocks_swig.multiply_ss()
+        op = blocks.multiply_ss()
         self.help_ss((src1_data, src2_data),
                       expected_result, op)
 
@@ -141,7 +141,7 @@ class test_add_mult_div_sub(gr_unittest.TestCase):
         src1_data = (1,  2, 3, 4, 5)
         src2_data = (8, -3, 4, 8, 2)
         expected_result = (8, -6, 12, 32, 10)
-        op = blocks_swig.multiply_ii()
+        op = blocks.multiply_ii()
         self.help_ii((src1_data, src2_data),
                       expected_result, op)
 
@@ -149,7 +149,7 @@ class test_add_mult_div_sub(gr_unittest.TestCase):
         src1_data = (1,  2, 3, 4, 5)
         src2_data = (8, -3, 4, 8, 2)
         expected_result = (8, -6, 12, 32, 10)
-        op = blocks_swig.multiply_ff()
+        op = blocks.multiply_ff()
         self.help_ff((src1_data, src2_data),
                       expected_result, op)
 
@@ -157,7 +157,7 @@ class test_add_mult_div_sub(gr_unittest.TestCase):
         src1_data = (1+1j,  2+2j, 3+3j, 4+4j, 5+5j)
         src2_data = (8, -3, 4, 8, 2)
         expected_result = (8+8j, -6-6j, 12+12j, 32+32j, 10+10j)
-        op = blocks_swig.multiply_cc()
+        op = blocks.multiply_cc()
         self.help_cc((src1_data, src2_data),
                       expected_result, op)
 
@@ -166,38 +166,38 @@ class test_add_mult_div_sub(gr_unittest.TestCase):
     def test_multiply_const_ss(self):
         src_data = (-1, 0, 1, 2, 3)
         expected_result = (-5, 0, 5, 10, 15)
-        op = blocks_swig.multiply_const_ss(5)
+        op = blocks.multiply_const_ss(5)
         self.help_ss((src_data,), expected_result, op)
 
     def test_multiply_const_ii(self):
         src_data = (-1, 0, 1, 2, 3)
         expected_result = (-5, 0, 5, 10, 15)
-        op = blocks_swig.multiply_const_ii(5)
+        op = blocks.multiply_const_ii(5)
         self.help_ii((src_data,), expected_result, op)
 
     def test_multiply_const_ff(self):
         src_data = (-1, 0, 1, 2, 3)
         expected_result = (-5, 0, 5, 10, 15)
-        op = blocks_swig.multiply_const_ff(5)
+        op = blocks.multiply_const_ff(5)
         self.help_ff((src_data,), expected_result, op)
 
     def test_multiply_const_cc(self):
         src_data = (-1-1j, 0+0j, 1+1j, 2+2j, 3+3j)
         expected_result = (-5-5j, 0+0j, 5+5j, 10+10j, 15+15j)
-        op = blocks_swig.multiply_const_cc(5)
+        op = blocks.multiply_const_cc(5)
         self.help_cc((src_data,), expected_result, op)
 
     def test_multiply_const_cc2(self):
         src_data = (-1-1j, 0+0j, 1+1j, 2+2j, 3+3j)
         expected_result = (-3-7j, 0+0j, 3+7j, 6+14j, 9+21j)
-        op = blocks_swig.multiply_const_cc(5+2j)
+        op = blocks.multiply_const_cc(5+2j)
         self.help_cc((src_data,), expected_result, op)
 
     def test_sub_ii(self):
         src1_data = (1,  2, 3, 4, 5)
         src2_data = (8, -3, 4, 8, 2)
         expected_result = (-7, 5, -1, -4, 3)
-        op = blocks_swig.sub_ii()
+        op = blocks.sub_ii()
         self.help_ii((src1_data, src2_data),
                       expected_result, op)
 
@@ -205,7 +205,7 @@ class test_add_mult_div_sub(gr_unittest.TestCase):
         src1_data       = ( 5,  9, -15, 1024)
         src2_data       = (10,  3,  -5,   64)
         expected_result = (0.5, 3,   3,   16)
-        op = blocks_swig.divide_ff()
+        op = blocks.divide_ff()
         self.help_ff((src1_data, src2_data), expected_result, op)
 
 if __name__ == '__main__':
diff --git a/gr-blocks/python/qa_add_mult_v.py b/gr-blocks/python/qa_add_mult_v.py
index 13cb71df2c..39040b159a 100755
--- a/gr-blocks/python/qa_add_mult_v.py
+++ b/gr-blocks/python/qa_add_mult_v.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -33,12 +33,12 @@ class test_add_mult_v(gr_unittest.TestCase):
 
     def help_ss(self, size, src_data, exp_data, op):
         for s in zip(range (len (src_data)), src_data):
-            src = gr.vector_source_s(s[1])
+            src = blocks.vector_source_s(s[1])
 	    srcv = blocks.stream_to_vector(gr.sizeof_short, size)
 	    self.tb.connect(src, srcv)
             self.tb.connect(srcv, (op, s[0]))
 	rhs = blocks.vector_to_stream(gr.sizeof_short, size)
-        dst = gr.vector_sink_s()
+        dst = blocks.vector_sink_s()
         self.tb.connect(op, rhs, dst)
         self.tb.run()
         result_data = dst.data()
@@ -46,12 +46,12 @@ class test_add_mult_v(gr_unittest.TestCase):
 
     def help_ii(self, size, src_data, exp_data, op):
         for s in zip(range (len (src_data)), src_data):
-            src = gr.vector_source_i(s[1])
+            src = blocks.vector_source_i(s[1])
 	    srcv = blocks.stream_to_vector(gr.sizeof_int, size)
 	    self.tb.connect(src, srcv)
             self.tb.connect(srcv, (op, s[0]))
 	rhs = blocks.vector_to_stream(gr.sizeof_int, size)
-        dst = gr.vector_sink_i()
+        dst = blocks.vector_sink_i()
         self.tb.connect(op, rhs, dst)
         self.tb.run()
         result_data = dst.data()
@@ -59,12 +59,12 @@ class test_add_mult_v(gr_unittest.TestCase):
 
     def help_ff(self, size, src_data, exp_data, op):
         for s in zip(range (len (src_data)), src_data):
-            src = gr.vector_source_f(s[1])
+            src = blocks.vector_source_f(s[1])
 	    srcv = blocks.stream_to_vector(gr.sizeof_float, size)
 	    self.tb.connect(src, srcv)
             self.tb.connect(srcv, (op, s[0]))
 	rhs = blocks.vector_to_stream(gr.sizeof_float, size)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(op, rhs, dst)
         self.tb.run()
         result_data = dst.data()
@@ -72,52 +72,52 @@ class test_add_mult_v(gr_unittest.TestCase):
 
     def help_cc(self, size, src_data, exp_data, op):
         for s in zip(range (len (src_data)), src_data):
-            src = gr.vector_source_c(s[1])
+            src = blocks.vector_source_c(s[1])
 	    srcv = blocks.stream_to_vector(gr.sizeof_gr_complex, size)
 	    self.tb.connect(src, srcv)
             self.tb.connect(srcv, (op, s[0]))
 	rhs = blocks.vector_to_stream(gr.sizeof_gr_complex, size)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(op, rhs, dst)
         self.tb.run()
         result_data = dst.data()
         self.assertEqual(exp_data, result_data)
 
     def help_const_ss(self, src_data, exp_data, op):
-	src = gr.vector_source_s(src_data)
+	src = blocks.vector_source_s(src_data)
 	srcv = blocks.stream_to_vector(gr.sizeof_short, len(src_data))
 	rhs = blocks.vector_to_stream(gr.sizeof_short, len(src_data))
-        dst = gr.vector_sink_s()
+        dst = blocks.vector_sink_s()
         self.tb.connect(src, srcv, op, rhs, dst)
         self.tb.run()
         result_data = dst.data()
         self.assertEqual(exp_data, result_data)
 
     def help_const_ii(self, src_data, exp_data, op):
-	src = gr.vector_source_i(src_data)
+	src = blocks.vector_source_i(src_data)
 	srcv = blocks.stream_to_vector(gr.sizeof_int, len(src_data))
 	rhs = blocks.vector_to_stream(gr.sizeof_int, len(src_data))
-        dst = gr.vector_sink_i()
+        dst = blocks.vector_sink_i()
         self.tb.connect(src, srcv, op, rhs, dst)
         self.tb.run()
         result_data = dst.data()
         self.assertEqual(exp_data, result_data)
 
     def help_const_ff(self, src_data, exp_data, op):
-	src = gr.vector_source_f(src_data)
+	src = blocks.vector_source_f(src_data)
 	srcv = blocks.stream_to_vector(gr.sizeof_float, len(src_data))
 	rhs = blocks.vector_to_stream(gr.sizeof_float, len(src_data))
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, srcv, op, rhs, dst)
         self.tb.run()
         result_data = dst.data()
         self.assertEqual(exp_data, result_data)
 
     def help_const_cc(self, src_data, exp_data, op):
-	src = gr.vector_source_c(src_data)
+	src = blocks.vector_source_c(src_data)
 	srcv = blocks.stream_to_vector(gr.sizeof_gr_complex, len(src_data))
 	rhs = blocks.vector_to_stream(gr.sizeof_gr_complex, len(src_data))
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, srcv, op, rhs, dst)
         self.tb.run()
         result_data = dst.data()
diff --git a/gr-blocks/python/qa_argmax.py b/gr-blocks/python/qa_argmax.py
index ec82b71cd4..2fc8641d16 100644
--- a/gr-blocks/python/qa_argmax.py
+++ b/gr-blocks/python/qa_argmax.py
@@ -39,20 +39,20 @@ class test_arg_max(gr_unittest.TestCase):
         src2_data = (0,0.0,3.0,0,10,0)
         src3_data = (0,0.0,3.0,0,1,0)
 
-        src1 = gr.vector_source_f(src1_data)
+        src1 = blocks.vector_source_f(src1_data)
         s2v1 = blocks.stream_to_vector(gr.sizeof_float, len(src1_data))
         tb.connect(src1, s2v1)
 
-        src2 = gr.vector_source_f(src2_data)
+        src2 = blocks.vector_source_f(src2_data)
         s2v2 = blocks.stream_to_vector(gr.sizeof_float, len(src1_data))
         tb.connect(src2, s2v2)
 
-        src3 = gr.vector_source_f(src3_data)
+        src3 = blocks.vector_source_f(src3_data)
         s2v3 = blocks.stream_to_vector(gr.sizeof_float, len(src1_data))
         tb.connect(src3, s2v3)
 
-        dst1 = gr.vector_sink_s()
-        dst2 = gr.vector_sink_s()
+        dst1 = blocks.vector_sink_s()
+        dst2 = blocks.vector_sink_s()
         argmax = blocks.argmax_fs(len(src1_data))
 
         tb.connect(s2v1, (argmax, 0))
diff --git a/gr-blocks/python/qa_bin_statistics.py b/gr-blocks/python/qa_bin_statistics.py
index 666f7c0d68..45d5105eb2 100755
--- a/gr-blocks/python/qa_bin_statistics.py
+++ b/gr-blocks/python/qa_bin_statistics.py
@@ -120,7 +120,7 @@ class test_bin_statistics(gr_unittest.TestCase):
                                     13, 14, 15, 16
                                     )])
 
-        src = gr.vector_source_f(src_data, False)
+        src = blocks.vector_source_f(src_data, False)
         s2v = blocks.stream_to_vector(gr.sizeof_float, vlen)
         stats = blocks.bin_statistics_f(vlen, msgq, tune, tune_delay, dwell_delay)
         self.tb.connect(src, s2v, stats)
@@ -148,7 +148,7 @@ class test_bin_statistics(gr_unittest.TestCase):
         expected_results = tuple([float(x) for x in
                                   ( 9, 10, 11, 12)])
 
-        src = gr.vector_source_f(src_data, False)
+        src = blocks.vector_source_f(src_data, False)
         s2v = blocks.stream_to_vector(gr.sizeof_float, vlen)
         stats = blocks.bin_statistics_f(vlen, msgq, tune, tune_delay, dwell_delay)
         self.tb.connect(src, s2v, stats)
@@ -178,7 +178,7 @@ class test_bin_statistics(gr_unittest.TestCase):
         expected_results = tuple([float(x) for x in
                                   ( 9, 10, 11, 12)])
 
-        src = gr.vector_source_f(src_data, False)
+        src = blocks.vector_source_f(src_data, False)
         s2v = blocks.stream_to_vector(gr.sizeof_float, vlen)
         stats = blocks.bin_statistics_f(vlen, msgq, tune, tune_delay, dwell_delay)
         self.tb.connect(src, s2v, stats)
@@ -210,7 +210,7 @@ class test_bin_statistics(gr_unittest.TestCase):
         expected_results = tuple([float(x) for x in
                                   ( 9, 10, 11, 12)])
 
-        src = gr.vector_source_f(src_data, False)
+        src = blocks.vector_source_f(src_data, False)
         s2v = blocks.stream_to_vector(gr.sizeof_float, vlen)
         stats = blocks.bin_statistics_f(vlen, msgq, tune, tune_delay, dwell_delay)
         self.tb.connect(src, s2v, stats)
diff --git a/gr-blocks/python/qa_block_gateway.py b/gr-blocks/python/qa_block_gateway.py
new file mode 100644
index 0000000000..20a2660cba
--- /dev/null
+++ b/gr-blocks/python/qa_block_gateway.py
@@ -0,0 +1,256 @@
+#
+# Copyright 2011-2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+from gnuradio import gr, gr_unittest
+import pmt
+import numpy
+import blocks_swig as blocks
+
+class add_2_f32_1_f32(gr.sync_block):
+    def __init__(self):
+        gr.sync_block.__init__(
+            self,
+            name = "add 2 f32",
+            in_sig = [numpy.float32, numpy.float32],
+            out_sig = [numpy.float32],
+        )
+
+    def work(self, input_items, output_items):
+        output_items[0][:] = input_items[0] + input_items[1]
+        return len(output_items[0])
+
+class add_2_fc32_1_fc32(gr.sync_block):
+    def __init__(self):
+        gr.sync_block.__init__(
+            self,
+            name = "add 2 fc32",
+            in_sig = [numpy.complex64, numpy.complex64],
+            out_sig = [numpy.complex64],
+        )
+
+    def work(self, input_items, output_items):
+        output_items[0][:] = input_items[0] + input_items[1]
+        return len(output_items[0])
+
+class convolve(gr.sync_block):
+    """
+    A demonstration using block history to properly perform a convolution.
+    """
+    def __init__(self):
+        gr.sync_block.__init__(
+            self,
+            name = "convolve",
+            in_sig = [numpy.float32],
+            out_sig = [numpy.float32]
+        )
+        self._taps = [1, 0, 0, 0]
+        self.set_history(len(self._taps))
+
+    def work(self, input_items, output_items):
+        output_items[0][:] = numpy.convolve(input_items[0], self._taps, mode='valid')
+        return len(output_items[0])
+
+class decim2x(gr.decim_block):
+    def __init__(self):
+        gr.decim_block.__init__(
+            self,
+            name = "decim2x",
+            in_sig = [numpy.float32],
+            out_sig = [numpy.float32],
+            decim = 2
+        )
+
+    def work(self, input_items, output_items):
+        output_items[0][:] = input_items[0][::2]
+        return len(output_items[0])
+
+class interp2x(gr.interp_block):
+    def __init__(self):
+        gr.interp_block.__init__(
+            self,
+            name = "interp2x",
+            in_sig = [numpy.float32],
+            out_sig = [numpy.float32],
+            interp = 2
+        )
+
+    def work(self, input_items, output_items):
+        output_items[0][1::2] = input_items[0]
+        output_items[0][::2] = input_items[0]
+        return len(output_items[0])
+
+class tag_source(gr.sync_block):
+    def __init__(self):
+        gr.sync_block.__init__(
+            self,
+            name = "tag source",
+            in_sig = None,
+            out_sig = [numpy.float32],
+        )
+
+    def work(self, input_items, output_items):
+        num_output_items = len(output_items[0])
+
+        #put code here to fill the output items...
+
+        #make a new tag on the middle element every time work is called
+        count = self.nitems_written(0) + num_output_items/2
+        key = pmt.string_to_symbol("example_key")
+        value = pmt.string_to_symbol("example_value")
+        self.add_item_tag(0, count, key, value)
+
+        return num_output_items
+
+class tag_sink(gr.sync_block):
+    def __init__(self):
+        gr.sync_block.__init__(
+            self,
+            name = "tag sink",
+            in_sig = [numpy.float32],
+            out_sig = None,
+        )
+        self.key = None
+
+    def work(self, input_items, output_items):
+        num_input_items = len(input_items[0])
+
+        #put code here to process the input items...
+
+        #print all the tags received in this work call
+        nread = self.nitems_read(0)
+        tags = self.get_tags_in_range(0, nread, nread+num_input_items)
+        for tag in tags:
+            #print tag.offset
+            #print pmt.symbol_to_string(tag.key)
+            #print pmt.symbol_to_string(tag.value)
+            self.key = pmt.symbol_to_string(tag.key)
+
+        return num_input_items
+
+class fc32_to_f32_2(gr.sync_block):
+    def __init__(self):
+        gr.sync_block.__init__(
+            self,
+            name = "fc32_to_f32_2",
+            in_sig = [numpy.complex64],
+            out_sig = [(numpy.float32, 2)],
+        )
+
+    def work(self, input_items, output_items):
+        output_items[0][::,0] = numpy.real(input_items[0])
+        output_items[0][::,1] = numpy.imag(input_items[0])
+        return len(output_items[0])
+
+class vector_to_stream(gr.interp_block):
+    def __init__(self, itemsize, nitems_per_block):
+        gr.interp_block.__init__(
+            self,
+            name = "vector_to_stream",
+            in_sig = [(itemsize, nitems_per_block)],
+            out_sig = [itemsize],
+            interp = nitems_per_block
+        )
+        self.block_size = nitems_per_block
+
+    def work(self, input_items, output_items):
+        n = 0
+        for i in xrange(len(input_items[0])):
+            for j in xrange(self.block_size):
+                output_items[0][n] = input_items[0][i][j]
+                n += 1
+      
+        return len(output_items[0])
+
+class test_block_gateway(gr_unittest.TestCase):
+
+    def test_add_f32(self):
+        tb = gr.top_block()
+        src0 = blocks.vector_source_f([1, 3, 5, 7, 9], False)
+        src1 = blocks.vector_source_f([0, 2, 4, 6, 8], False)
+        adder = add_2_f32_1_f32()
+        sink = blocks.vector_sink_f()
+        tb.connect((src0, 0), (adder, 0))
+        tb.connect((src1, 0), (adder, 1))
+        tb.connect(adder, sink)
+        tb.run()
+        self.assertEqual(sink.data(), (1, 5, 9, 13, 17))
+
+    def test_add_fc32(self):
+        tb = gr.top_block()
+        src0 = blocks.vector_source_c([1, 3j, 5, 7j, 9], False)
+        src1 = blocks.vector_source_c([0, 2j, 4, 6j, 8], False)
+        adder = add_2_fc32_1_fc32()
+        sink = blocks.vector_sink_c()
+        tb.connect((src0, 0), (adder, 0))
+        tb.connect((src1, 0), (adder, 1))
+        tb.connect(adder, sink)
+        tb.run()
+        self.assertEqual(sink.data(), (1, 5j, 9, 13j, 17))
+
+    def test_convolve(self):
+        tb = gr.top_block()
+        src = blocks.vector_source_f([1, 2, 3, 4, 5, 6, 7, 8], False)
+        cv = convolve()
+        sink = blocks.vector_sink_f()
+        tb.connect(src, cv, sink)
+        tb.run()
+        self.assertEqual(sink.data(), (1, 2, 3, 4, 5, 6, 7, 8))
+
+    def test_decim2x(self):
+        tb = gr.top_block()
+        src = blocks.vector_source_f([1, 2, 3, 4, 5, 6, 7, 8], False)
+        d2x = decim2x()
+        sink = blocks.vector_sink_f()
+        tb.connect(src, d2x, sink)
+        tb.run()
+        self.assertEqual(sink.data(), (1, 3, 5, 7))
+
+    def test_interp2x(self):
+        tb = gr.top_block()
+        src = blocks.vector_source_f([1, 3, 5, 7, 9], False)
+        i2x = interp2x()
+        sink = blocks.vector_sink_f()
+        tb.connect(src, i2x, sink)
+        tb.run()
+        self.assertEqual(sink.data(), (1, 1, 3, 3, 5, 5, 7, 7, 9, 9))
+
+    def test_tags(self):
+        src = tag_source()
+        sink = tag_sink()
+        head = blocks.head(gr.sizeof_float, 50000) #should be enough items to get a tag through
+        tb = gr.top_block()
+        tb.connect(src, head, sink)
+        tb.run()
+        self.assertEqual(sink.key, "example_key")
+
+    def test_fc32_to_f32_2(self):
+        tb = gr.top_block()
+        src = blocks.vector_source_c([1+2j, 3+4j, 5+6j, 7+8j, 9+10j], False)
+        convert = fc32_to_f32_2()
+        v2s = vector_to_stream(numpy.float32, 2)
+        sink = blocks.vector_sink_f()
+        tb.connect(src, convert, v2s, sink)
+        tb.run()
+        self.assertEqual(sink.data(), (1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
+
+if __name__ == '__main__':
+    gr_unittest.run(test_block_gateway, "test_block_gateway.xml")
+
diff --git a/gr-blocks/python/qa_boolean_operators.py b/gr-blocks/python/qa_boolean_operators.py
index 5572f60acb..8755dad2fc 100755
--- a/gr-blocks/python/qa_boolean_operators.py
+++ b/gr-blocks/python/qa_boolean_operators.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2008,2010 Free Software Foundation, Inc.
+# Copyright 2004,2007,2008,2010,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 
 class test_boolean_operators (gr_unittest.TestCase):
 
@@ -33,9 +33,9 @@ class test_boolean_operators (gr_unittest.TestCase):
 
     def help_ss (self, src_data, exp_data, op):
         for s in zip (range (len (src_data)), src_data):
-            src = gr.vector_source_s (s[1])
+            src = blocks.vector_source_s (s[1])
             self.tb.connect (src, (op, s[0]))
-        dst = gr.vector_sink_s ()
+        dst = blocks.vector_sink_s ()
         self.tb.connect (op, dst)
         self.tb.run ()
         result_data = dst.data ()
@@ -43,9 +43,9 @@ class test_boolean_operators (gr_unittest.TestCase):
 
     def help_bb (self, src_data, exp_data, op):
         for s in zip (range (len (src_data)), src_data):
-            src = gr.vector_source_b (s[1])
+            src = blocks.vector_source_b (s[1])
             self.tb.connect (src, (op, s[0]))
-        dst = gr.vector_sink_b ()
+        dst = blocks.vector_sink_b ()
         self.tb.connect (op, dst)
         self.tb.run ()
         result_data = dst.data ()
@@ -53,9 +53,9 @@ class test_boolean_operators (gr_unittest.TestCase):
 
     def help_ii (self, src_data, exp_data, op):
         for s in zip (range (len (src_data)), src_data):
-            src = gr.vector_source_i (s[1])
+            src = blocks.vector_source_i (s[1])
             self.tb.connect (src, (op, s[0]))
-        dst = gr.vector_sink_i ()
+        dst = blocks.vector_sink_i ()
         self.tb.connect (op, dst)
         self.tb.run ()
         result_data = dst.data ()
@@ -65,7 +65,7 @@ class test_boolean_operators (gr_unittest.TestCase):
         src1_data =       (1,  2,  3,  0x5004,   0x1150)
         src2_data =       (8,  2,  1 , 0x0508,   0x1105)
         expected_result = (9,  0,  2,  0x550C,   0x0055)
-        op = blocks_swig.xor_ss ()
+        op = blocks.xor_ss ()
         self.help_ss ((src1_data, src2_data),
                       expected_result, op)
 
@@ -73,7 +73,7 @@ class test_boolean_operators (gr_unittest.TestCase):
         src1_data =       (1,  2,  3,  4,   0x50)
         src2_data =       (8,  2,  1 , 8,   0x05)
         expected_result = (9,  0,  2,  0xC, 0x55)
-        op = blocks_swig.xor_bb ()
+        op = blocks.xor_bb ()
         self.help_bb ((src1_data, src2_data),
                       expected_result, op)
 
@@ -82,7 +82,7 @@ class test_boolean_operators (gr_unittest.TestCase):
         src1_data =       (1,  2,  3,  0x5000004,   0x11000050)
         src2_data =       (8,  2,  1 , 0x0500008,   0x11000005)
         expected_result = (9,  0,  2,  0x550000C,   0x00000055)
-        op = blocks_swig.xor_ii ()
+        op = blocks.xor_ii ()
         self.help_ii ((src1_data, src2_data),
                       expected_result, op)
 
@@ -91,7 +91,7 @@ class test_boolean_operators (gr_unittest.TestCase):
         src1_data =       (1,  2,  3,  0x5004,   0x1150)
         src2_data =       (8,  2,  1 , 0x0508,   0x1105)
         expected_result = (0,  2,  1,  0x0000,   0x1100)
-        op = blocks_swig.and_ss ()
+        op = blocks.and_ss ()
         self.help_ss ((src1_data, src2_data),
                       expected_result, op)
 
@@ -100,7 +100,7 @@ class test_boolean_operators (gr_unittest.TestCase):
         src2_data =       (8,  2, 2,  1,  0x08,   0x05)
         src3_data =       (8,  2, 1,  1,  0x08,   0x05)
         expected_result = (0,  2, 0,  1,  0x00,   0x00)
-        op = blocks_swig.and_bb ()
+        op = blocks.and_bb ()
         self.help_bb ((src1_data, src2_data, src3_data),
                       expected_result, op)
 
@@ -108,16 +108,16 @@ class test_boolean_operators (gr_unittest.TestCase):
         src1_data =       (1,  2,  3,  0x50005004,   0x11001150)
         src2_data =       (8,  2,  1 , 0x05000508,   0x11001105)
         expected_result = (0,  2,  1,  0x00000000,   0x11001100)
-        op = blocks_swig.and_ii ()
+        op = blocks.and_ii ()
         self.help_ii ((src1_data, src2_data),
                       expected_result, op)
 
     def test_and_const_ss (self):
         src_data =        (1,  2,  3,  0x5004,   0x1150)
         expected_result = (0,  2,  2,  0x5000,   0x1100)
-        src = gr.vector_source_s(src_data)
-        op = blocks_swig.and_const_ss (0x55AA)
-        dst = gr.vector_sink_s()
+        src = blocks.vector_source_s(src_data)
+        op = blocks.and_const_ss (0x55AA)
+        dst = blocks.vector_sink_s()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(dst.data(), expected_result)
@@ -125,9 +125,9 @@ class test_boolean_operators (gr_unittest.TestCase):
     def test_and_const_bb (self):
         src_data =        (1,  2, 3,  0x50,   0x11)
         expected_result = (0,  2, 2,  0x00,   0x00)
-        src = gr.vector_source_b(src_data)
-        op = blocks_swig.and_const_bb (0xAA)
-        dst = gr.vector_sink_b()
+        src = blocks.vector_source_b(src_data)
+        op = blocks.and_const_bb (0xAA)
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(dst.data(), expected_result)
@@ -136,9 +136,9 @@ class test_boolean_operators (gr_unittest.TestCase):
     def test_and_const_ii (self):
         src_data =        (1,  2,  3,  0x5004,   0x1150)
         expected_result = (0,  2,  2,  0x5000,   0x1100)
-        src = gr.vector_source_i(src_data)
-        op = blocks_swig.and_const_ii (0x55AA)
-        dst = gr.vector_sink_i()
+        src = blocks.vector_source_i(src_data)
+        op = blocks.and_const_ii (0x55AA)
+        dst = blocks.vector_sink_i()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(dst.data(), expected_result)
@@ -148,7 +148,7 @@ class test_boolean_operators (gr_unittest.TestCase):
         src1_data =       (1,  2,  3,  0x5004,   0x1150)
         src2_data =       (8,  2,  1 , 0x0508,   0x1105)
         expected_result = (9,  2,  3,  0x550C,   0x1155)
-        op = blocks_swig.or_ss ()
+        op = blocks.or_ss ()
         self.help_ss ((src1_data, src2_data),
                       expected_result, op)
 
@@ -157,7 +157,7 @@ class test_boolean_operators (gr_unittest.TestCase):
         src2_data =       (8,  2, 2,  1 , 0x08,   0x05)
         src3_data =       (8,  2, 1,  1 , 0x08,   0x05)
         expected_result = (9,  2, 3,  3,  0x0C,   0x55)
-        op = blocks_swig.or_bb ()
+        op = blocks.or_bb ()
         self.help_bb ((src1_data, src2_data, src3_data),
                       expected_result, op)
 
@@ -165,28 +165,28 @@ class test_boolean_operators (gr_unittest.TestCase):
         src1_data =       (1,  2,  3,  0x50005004,   0x11001150)
         src2_data =       (8,  2,  1 , 0x05000508,   0x11001105)
         expected_result = (9,  2,  3,  0x5500550C,   0x11001155)
-        op = blocks_swig.or_ii ()
+        op = blocks.or_ii ()
         self.help_ii ((src1_data, src2_data),
                       expected_result, op)
 
     def test_not_ss (self):
         src1_data =       (1,      2,      3,       0x5004,   0x1150)
         expected_result = (~1,     ~2,      ~3,       ~0x5004,   ~0x1150)
-        op = blocks_swig.not_ss ()
+        op = blocks.not_ss ()
         self.help_ss ((((src1_data),)),
                       expected_result, op)
 
     def test_not_bb (self):
         src1_data =       (1,     2,    2,     3,     0x04,   0x50)
         expected_result = (0xFE,  0xFD, 0xFD,  0xFC,  0xFB,   0xAF)
-        op = blocks_swig.not_bb ()
+        op = blocks.not_bb ()
         self.help_bb (((src1_data), ),
                       expected_result, op)
 
     def test_not_ii (self):
         src1_data =       (1,    2,  3,  0x50005004,   0x11001150)
         expected_result = (~1 , ~2, ~3, ~0x50005004,  ~0x11001150)
-        op = blocks_swig.not_ii ()
+        op = blocks.not_ii ()
         self.help_ii (((src1_data),),
                       expected_result, op)
 
diff --git a/gr-blocks/python/qa_burst_tagger.py b/gr-blocks/python/qa_burst_tagger.py
index 52d688d103..9923d2a368 100644
--- a/gr-blocks/python/qa_burst_tagger.py
+++ b/gr-blocks/python/qa_burst_tagger.py
@@ -35,8 +35,8 @@ class test_burst_tagger(gr_unittest.TestCase):
     def test_001(self):
         src_data  = ( 1,  2,  3,  4,  5,  6,  7,  8,  9,  10)
         trg_data = (-1, -1,  1,  1, -1, -1,  1,  1, -1,  -1)
-        src = gr.vector_source_i(src_data)
-        trg = gr.vector_source_s(trg_data)
+        src = blocks.vector_source_i(src_data)
+        trg = blocks.vector_source_s(trg_data)
         op  = blocks.burst_tagger(gr.sizeof_int)
         snk = blocks.tag_debug(gr.sizeof_int, "burst tagger QA")
         self.tb.connect(src, (op,0))
diff --git a/gr-blocks/python/qa_conjugate.py b/gr-blocks/python/qa_conjugate.py
index 1808aa9c0b..7aab2e70a7 100644
--- a/gr-blocks/python/qa_conjugate.py
+++ b/gr-blocks/python/qa_conjugate.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 
 class test_conjugate (gr_unittest.TestCase):
 
@@ -40,9 +40,9 @@ class test_conjugate (gr_unittest.TestCase):
                      2+2j,  1+1j,  2-2j,  1-1j,
                      0-0j)
 
-        src = gr.vector_source_c(src_data)
-        op = blocks_swig.conjugate_cc ()
-        dst = gr.vector_sink_c ()
+        src = blocks.vector_source_c(src_data)
+        op = blocks.conjugate_cc ()
+        dst = blocks.vector_sink_c ()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
diff --git a/gr-blocks/python/qa_copy.py b/gr-blocks/python/qa_copy.py
index 012d790609..04f6454231 100755
--- a/gr-blocks/python/qa_copy.py
+++ b/gr-blocks/python/qa_copy.py
@@ -46,7 +46,7 @@ class test_copy(gr_unittest.TestCase):
         src_data = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
         expected_result = ()
         src = blocks.vector_source_b(src_data)
-        op = gr.copy(gr.sizeof_char)
+        op = blocks.copy(gr.sizeof_char)
 	op.set_enabled(False)
         dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
diff --git a/gr-blocks/python/qa_cpp_py_binding.py b/gr-blocks/python/qa_cpp_py_binding.py
new file mode 100755
index 0000000000..950f21b9f7
--- /dev/null
+++ b/gr-blocks/python/qa_cpp_py_binding.py
@@ -0,0 +1,174 @@
+#!/usr/bin/env python
+#
+# Copyright 2012,2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+# 
+# This program tests mixed python and c++ ctrlport exports in a single app
+#
+
+import Ice
+import sys, time, random, numpy
+from gnuradio import gr, gr_unittest
+
+from gnuradio.ctrlport import GNURadio
+from gnuradio import ctrlport
+import os
+
+import blocks_swig as blocks
+
+def get1():
+    return "success"
+
+def get2():
+    return "failure"
+
+class inc_class:
+    def __init__(self):
+        self.val = 1
+    def pp(self):
+        self.val = self.val+1
+        return self.val
+
+get3 = inc_class()
+
+def get4():
+    random.seed(0)
+    rv = random.random()
+    return rv
+
+def get5():
+    numpy.random.seed(0)
+    samp_t = numpy.random.randn(24)+1j*numpy.random.randn(24);
+    samp_f = numpy.fft.fft(samp_t);
+    log_pow_f = 20*numpy.log10(numpy.abs(samp_f))
+    rv = list(log_pow_f)
+    return rv;
+
+def get6():
+    numpy.random.seed(0)
+    samp_t = numpy.random.randn(1024)+1j*numpy.random.randn(1024);
+    rv = list(samp_t)
+    return rv;
+
+class test_cpp_py_binding(gr_unittest.TestCase):
+
+    def setUp(self):
+        self.tb = gr.top_block()
+        os.environ['GR_CONF_CONTROLPORT_ON'] = 'True'
+
+    def tearDown(self):
+        self.tb = None
+
+    def test_001(self):
+        v1 = gr.RPC_get_string("pyland", "v1", "unit_1_string",
+                               "Python Exported String", "", "", "",
+                               gr.DISPNULL)
+        v1.activate(get1)
+
+        v2 = gr.RPC_get_string("pyland", "v2", "unit_2_string",
+                               "Python Exported String", "", "", "",
+                               gr.DISPNULL)
+        v2.activate(get2)
+
+        v3 = gr.RPC_get_int("pyland", "v3", "unit_3_int",
+                            "Python Exported Int", 0, 100, 1,
+                            gr.DISPNULL)
+        v3.activate(get3.pp)
+
+        v4 = gr.RPC_get_double("pyland", "time", "unit_4_time_double",
+                               "Python Exported Double", 0, 1000, 1,
+                               gr.DISPNULL)
+        v4.activate(get4)
+
+        v5 = gr.RPC_get_vector_float("pyland", "fvec", "unit_5_float_vector",
+                                     "Python Exported Float Vector", [], [], [],
+                                     gr.DISPTIME | gr.DISPOPTCPLX)
+        v5.activate(get5)
+
+        v6 = gr.RPC_get_vector_gr_complex("pyland", "cvec", "unit_6_gr_complex_vector",
+                                          "Python Exported Complex Vector", [], [], [],
+                                          gr.DISPXY | gr.DISPOPTSCATTER)
+        v6.activate(get6)
+
+        # print some variables locally
+        val = get1()
+        rval = v1.get()
+        self.assertEqual(val, rval)
+
+        val = get2()
+        rval = v2.get()
+        self.assertEqual(val, rval)
+
+        val = get3.pp()
+        rval = v3.get()
+        self.assertEqual(val+1, rval)
+
+        val = get4()
+        rval = v4.get()
+        self.assertEqual(val, rval)
+
+        val = get5()
+        rval = v5.get()
+        self.assertComplexTuplesAlmostEqual(val, rval, 5)
+        
+        val = get6()
+        rval = v6.get()
+        self.assertComplexTuplesAlmostEqual(val, rval, 5)
+
+    def test_002(self):
+        data = range(1,9)
+
+        self.src = blocks.vector_source_c(data)
+        self.p1 = gr.ctrlport_probe_c("aaa","C++ exported variable")
+        self.p2 = gr.ctrlport_probe_c("bbb","C++ exported variable")
+        probe_name = self.p2.alias()
+
+        self.tb.connect(self.src, self.p1)
+        self.tb.connect(self.src, self.p2)
+        self.tb.start()
+
+        # Probes return complex values as list of floats with re, im
+        # Imaginary parts of this data set are 0.
+        expected_result = [1, 0, 2, 0, 3, 0, 4, 0,
+                           5, 0, 6, 0, 7, 0, 8, 0]
+
+        # Make sure we have time for flowgraph to run
+        time.sleep(0.1)
+
+        # Get available endpoint
+        ep = gr.rpcmanager_get().endpoints()[0]
+
+        # Initialize a simple Ice client from endpoint
+        ic = Ice.initialize(sys.argv)
+        base = ic.stringToProxy(ep)
+        radio = GNURadio.ControlPortPrx.checkedCast(base)
+
+        # Get all exported knobs
+        ret = radio.get([probe_name + "::bbb"])
+        for name in ret.keys():
+            result = ret[name].value
+            self.assertEqual(result, expected_result)
+
+        self.tb.stop()
+
+if __name__ == '__main__':
+    gr_unittest.run(test_cpp_py_binding, "test_cpp_py_binding.xml")
+
diff --git a/gr-blocks/python/qa_cpp_py_binding_set.py b/gr-blocks/python/qa_cpp_py_binding_set.py
new file mode 100755
index 0000000000..28ddc48b2f
--- /dev/null
+++ b/gr-blocks/python/qa_cpp_py_binding_set.py
@@ -0,0 +1,152 @@
+#!/usr/bin/env python
+#
+# Copyright 2012,2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+# 
+# This program tests mixed python and c++ GRCP sets in a single app
+#
+
+import Ice
+import sys, time, random, numpy
+from gnuradio import gr, gr_unittest
+
+from gnuradio.ctrlport import GNURadio
+from gnuradio import ctrlport
+import os
+
+import blocks_swig as blocks
+
+class inc_class:
+    def __init__(self,val):
+        self.val = val;
+
+    def _get(self):
+        #print "returning get (val = %s)"%(str(self.val));
+        return self.val;
+
+    def _set(self,val):
+        #print "updating val to %s"%(str(val));
+        self.val = val;
+        return;
+
+getset1 = inc_class(10);
+getset2 = inc_class(100.0);
+getset3 = inc_class("test");
+
+class test_cpp_py_binding_set(gr_unittest.TestCase):
+    def setUp(self):
+        self.tb = gr.top_block()
+        os.environ['GR_CONF_CONTROLPORT_ON'] = 'True'
+
+    def tearDown(self):
+        self.tb = None
+
+    def test_001(self):
+
+        g1 = gr.RPC_get_int("pyland", "v1", "unit_1_int",
+                                  "Python Exported Int", 0, 100, 10,
+                                  gr.DISPNULL)
+        g1.activate(getset1._get)
+        s1 = gr.RPC_get_int("pyland", "v1", "unit_1_int",
+                                  "Python Exported Int", 0, 100, 10,
+                                  gr.DISPNULL)
+        s1.activate(getset1._set)
+        time.sleep(0.01)
+
+        # test int variables
+        getset1._set(21)
+        val = getset1._get()
+        rval = g1.get()
+        self.assertEqual(val, rval)
+
+        g2 = gr.RPC_get_float("pyland", "v2", "unit_2_float",
+                              "Python Exported Float", -100, 1000.0, 100.0,
+                              gr.DISPNULL)
+        g2.activate(getset2._get)
+        s2 = gr.RPC_get_float("pyland", "v2", "unit_2_float",
+                              "Python Exported Float", -100, 1000.0, 100.0,
+                              gr.DISPNULL)
+        s2.activate(getset2._set)
+        time.sleep(0.01)
+
+        # test float variables
+        getset2._set(123.456)
+        val = getset2._get()
+        rval = g2.get()
+        self.assertAlmostEqual(val, rval, 4)
+
+        g3 = gr.RPC_get_string("pyland", "v3", "unit_3_string",
+                               "Python Exported String", "", "", "",
+                               gr.DISPNULL)
+        g3.activate(getset3._get)
+        s3 = gr.RPC_get_string("pyland", "v3", "unit_3_string",
+                               "Python Exported String", "", "", "",
+                               gr.DISPNULL)
+        s3.activate(getset3._set)
+        time.sleep(0.01)
+
+        # test string variables
+        getset3._set("third test")
+        val = getset3._get()
+        rval = g3.get()
+        self.assertEqual(val, rval)
+
+
+    def test_002(self):
+        data = range(1, 10)
+
+        self.src = blocks.vector_source_c(data, True)
+        self.p = blocks.nop(gr.sizeof_gr_complex)
+        self.p.set_ctrlport_test(0);
+        probe_info = self.p.alias()
+
+        self.tb.connect(self.src, self.p)
+
+        # Get available endpoint
+        ep = gr.rpcmanager_get().endpoints()[0]
+
+        # Initialize a simple Ice client from endpoint
+        ic = Ice.initialize(sys.argv)
+        base = ic.stringToProxy(ep)
+        radio = GNURadio.ControlPortPrx.checkedCast(base)
+
+        self.tb.start()
+
+        # Make sure we have time for flowgraph to run
+        time.sleep(0.1)
+
+        # Get all exported knobs
+        key_name_test = probe_info+"::test"
+        ret = radio.get([key_name_test,])
+
+        ret[key_name_test].value = 10
+        radio.set({key_name_test: ret[key_name_test]})
+
+        ret = radio.get([])
+        result_test = ret[key_name_test].value
+        self.assertEqual(result_test, 10)
+
+        self.tb.stop()
+        self.tb.wait()
+
+if __name__ == '__main__':
+    gr_unittest.run(test_cpp_py_binding_set, "test_cpp_py_binding_set.xml")
+
diff --git a/gr-blocks/python/qa_delay.py b/gr-blocks/python/qa_delay.py
index 031cadb2d7..44b87c14ae 100755
--- a/gr-blocks/python/qa_delay.py
+++ b/gr-blocks/python/qa_delay.py
@@ -37,9 +37,9 @@ class test_delay(gr_unittest.TestCase):
         src_data = [float(x) for x in range(0, 100)]
         expected_result = tuple(delta_t*[0.0] + src_data)
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = blocks.delay(gr.sizeof_float, delta_t)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         tb.connect(src, op, dst)
         tb.run()
@@ -52,9 +52,9 @@ class test_delay(gr_unittest.TestCase):
         src_data = [float(x) for x in range(0, 100)]
         expected_result = tuple(delta_t*[0.0] + src_data)
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = blocks.delay(gr.sizeof_float, delta_t)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         tb.connect(src, op, dst)
         tb.run()
diff --git a/gr-blocks/python/qa_file_metadata.py b/gr-blocks/python/qa_file_metadata.py
index cf7a075f42..3112ea69b0 100644
--- a/gr-blocks/python/qa_file_metadata.py
+++ b/gr-blocks/python/qa_file_metadata.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -54,7 +54,7 @@ class test_file_metadata(gr_unittest.TestCase):
         extras_str = pmt.serialize_str(extras)
 
         data = sig_source_c(samp_rate, 1000, 1, N)
-        src  = gr.vector_source_c(data)
+        src  = blocks.vector_source_c(data)
         fsnk = blocks.file_meta_sink(gr.sizeof_gr_complex, outfile,
                                      samp_rate, 1, 
                                      blocks.GR_FILE_FLOAT, True,
@@ -96,9 +96,9 @@ class test_file_metadata(gr_unittest.TestCase):
         # Test file metadata source
         src.rewind()
         fsrc = blocks.file_meta_source(outfile, False)
-        vsnk = gr.vector_sink_c()
+        vsnk = blocks.vector_sink_c()
         tsnk = blocks.tag_debug(gr.sizeof_gr_complex, "QA")
-        ssnk = gr.vector_sink_c()
+        ssnk = blocks.vector_sink_c()
         self.tb.disconnect(src, fsnk)
         self.tb.connect(fsrc, vsnk)
         self.tb.connect(fsrc, tsnk)
@@ -133,7 +133,7 @@ class test_file_metadata(gr_unittest.TestCase):
         extras_str = pmt.serialize_str(extras)
 
         data = sig_source_c(samp_rate, 1000, 1, N)
-        src  = gr.vector_source_c(data)
+        src  = blocks.vector_source_c(data)
         fsnk = blocks.file_meta_sink(gr.sizeof_gr_complex, outfile,
                                      samp_rate, 1, 
                                      blocks.GR_FILE_FLOAT, True,
@@ -175,9 +175,9 @@ class test_file_metadata(gr_unittest.TestCase):
         # Test file metadata source
         src.rewind()
         fsrc = blocks.file_meta_source(outfile, False, detached, outfile_hdr)
-        vsnk = gr.vector_sink_c()
+        vsnk = blocks.vector_sink_c()
         tsnk = blocks.tag_debug(gr.sizeof_gr_complex, "QA")
-        ssnk = gr.vector_sink_c()
+        ssnk = blocks.vector_sink_c()
         self.tb.disconnect(src, fsnk)
         self.tb.connect(fsrc, vsnk)
         self.tb.connect(fsrc, tsnk)
diff --git a/gr-blocks/python/qa_file_source_sink.py b/gr-blocks/python/qa_file_source_sink.py
index 2898f760ec..cf3b512db0 100644
--- a/gr-blocks/python/qa_file_source_sink.py
+++ b/gr-blocks/python/qa_file_source_sink.py
@@ -38,12 +38,12 @@ class test_file_source_sink(gr_unittest.TestCase):
         expected_result = range(1000)
 
         filename = "tmp.32f"
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         snk = blocks.file_sink(gr.sizeof_float, filename)
         snk.set_unbuffered(True)
 
         src2 = blocks.file_source(gr.sizeof_float, filename)
-        snk2 = gr.vector_sink_f()
+        snk2 = blocks.vector_sink_f()
 
         self.tb.connect(src, snk)
         self.tb.run()
@@ -65,7 +65,7 @@ class test_file_source_sink(gr_unittest.TestCase):
         fhandle0 = open(filename, "wb")
         fd0 = fhandle0.fileno()
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         snk = blocks.file_descriptor_sink(gr.sizeof_float, fd0)
 
         self.tb.connect(src, snk)
@@ -76,7 +76,7 @@ class test_file_source_sink(gr_unittest.TestCase):
         fhandle1 = open(filename, "rb")
         fd1 = fhandle1.fileno()
         src2 = blocks.file_descriptor_source(gr.sizeof_float, fd1, False)
-        snk2 = gr.vector_sink_f()
+        snk2 = blocks.vector_sink_f()
 
         self.tb.disconnect(src, snk)
         self.tb.connect(src2, snk2)
diff --git a/gr-blocks/python/qa_hier_block2.py b/gr-blocks/python/qa_hier_block2.py
new file mode 100755
index 0000000000..f482fda8cf
--- /dev/null
+++ b/gr-blocks/python/qa_hier_block2.py
@@ -0,0 +1,398 @@
+#!/usr/bin/env python
+
+from gnuradio import gr, gr_unittest
+import blocks_swig as blocks
+import numpy
+
+class add_ff(gr.sync_block):
+    def __init__(self):
+        gr.sync_block.__init__(
+            self,
+            name = "add_ff",
+            in_sig = [numpy.float32, numpy.float32],
+            out_sig = [numpy.float32],
+        )
+
+    def work(self, input_items, output_items):
+        output_items[0][:] = input_items[0] + input_items[1]
+        return len(output_items[0])
+
+class multiply_const_ff(gr.sync_block):
+    def __init__(self, k):
+        gr.sync_block.__init__(
+            self,
+            name = "multiply_ff",
+            in_sig = [numpy.float32],
+            out_sig = [numpy.float32],
+        )
+        self.k = k
+
+    def work(self, input_items, output_items):
+        output_items[0][:] = map(lambda x: self.k*x, input_items[0])
+        return len(output_items[0])
+
+class test_hier_block2(gr_unittest.TestCase):
+
+    def setUp(self):
+	pass
+
+    def tearDown(self):
+    	pass
+
+    def test_001_make(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	self.assertEqual("test_block", hblock.name())
+	self.assertEqual(1, hblock.input_signature().max_streams())
+	self.assertEqual(1, hblock.output_signature().min_streams())
+	self.assertEqual(1, hblock.output_signature().max_streams())
+	self.assertEqual(gr.sizeof_int, hblock.output_signature().sizeof_stream_item(0))
+
+    def test_002_connect_input(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+	hblock.connect(hblock, nop1)
+
+    def test_004_connect_output(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+	hblock.connect(nop1, hblock)
+
+    def test_005_connect_output_in_use(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+	nop2 = blocks.nop(gr.sizeof_int)
+	hblock.connect(nop1, hblock)
+	self.assertRaises(ValueError,
+	    lambda: hblock.connect(nop2, hblock))
+
+    def test_006_connect_invalid_src_port_neg(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+	self.assertRaises(ValueError,
+	    lambda: hblock.connect((hblock, -1), nop1))
+
+    def test_005_connect_invalid_src_port_exceeds(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+	self.assertRaises(ValueError,
+	    lambda: hblock.connect((hblock, 1), nop1))
+
+    def test_007_connect_invalid_dst_port_neg(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+	nop2 = blocks.nop(gr.sizeof_int)
+	self.assertRaises(ValueError,
+	    lambda: hblock.connect(nop1, (nop2, -1)))
+
+    def test_008_connect_invalid_dst_port_exceeds(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.null_sink(gr.sizeof_int)
+	nop2 = blocks.null_sink(gr.sizeof_int)
+	self.assertRaises(ValueError,
+	    lambda: hblock.connect(nop1, (nop2, 1)))
+
+    def test_009_check_topology(self):
+	hblock = gr.top_block("test_block")
+	hblock.check_topology(0, 0)
+
+    def test_010_run(self):
+        expected = (1.0, 2.0, 3.0, 4.0)
+        hblock = gr.top_block("test_block")
+        src = blocks.vector_source_f(expected, False)
+        sink1 = blocks.vector_sink_f()
+        sink2 = blocks.vector_sink_f()
+        hblock.connect(src, sink1)
+        hblock.connect(src, sink2)
+        hblock.run()
+        actual1 = sink1.data()
+        actual2 = sink2.data()
+        self.assertEquals(expected, actual1)
+        self.assertEquals(expected, actual2)
+
+    def test_012_disconnect_input(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+	hblock.connect(hblock, nop1)
+        hblock.disconnect(hblock, nop1)
+
+    def test_013_disconnect_input_not_connected(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+        nop2 = blocks.nop(gr.sizeof_int)
+	hblock.connect(hblock, nop1)
+        self.assertRaises(ValueError,
+            lambda: hblock.disconnect(hblock, nop2))
+
+    def test_014_disconnect_input_neg(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+	hblock.connect(hblock, nop1)
+        self.assertRaises(ValueError,
+            lambda: hblock.disconnect((hblock, -1), nop1))
+
+    def test_015_disconnect_input_exceeds(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+	hblock.connect(hblock, nop1)
+        self.assertRaises(ValueError,
+            lambda: hblock.disconnect((hblock, 1), nop1))
+
+    def test_016_disconnect_output(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+	hblock.connect(nop1, hblock)
+        hblock.disconnect(nop1, hblock)
+
+    def test_017_disconnect_output_not_connected(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+        nop2 = blocks.nop(gr.sizeof_int)
+	hblock.connect(nop1, hblock)
+        self.assertRaises(ValueError,
+            lambda: hblock.disconnect(nop2, hblock))
+
+    def test_018_disconnect_output_neg(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+	hblock.connect(hblock, nop1)
+        self.assertRaises(ValueError,
+            lambda: hblock.disconnect(nop1, (hblock, -1)))
+
+    def test_019_disconnect_output_exceeds(self):
+	hblock = gr.hier_block2("test_block",
+				gr.io_signature(1,1,gr.sizeof_int),
+				gr.io_signature(1,1,gr.sizeof_int))
+	nop1 = blocks.nop(gr.sizeof_int)
+	hblock.connect(nop1, hblock)
+        self.assertRaises(ValueError,
+            lambda: hblock.disconnect(nop1, (hblock, 1)))
+
+    def test_020_run(self):
+	hblock = gr.top_block("test_block")
+	data = (1.0, 2.0, 3.0, 4.0)
+	src = blocks.vector_source_f(data, False)
+	dst = blocks.vector_sink_f()
+	hblock.connect(src, dst)
+	hblock.run()
+	self.assertEquals(data, dst.data())
+
+    def test_021_connect_single(self):
+        hblock = gr.top_block("test_block")
+        blk = gr.hier_block2("block",
+                             gr.io_signature(0, 0, 0),
+                             gr.io_signature(0, 0, 0))
+        hblock.connect(blk)
+
+    def test_022_connect_single_with_ports(self):
+        hblock = gr.top_block("test_block")
+        blk = gr.hier_block2("block",
+                             gr.io_signature(1, 1, 1),
+                             gr.io_signature(1, 1, 1))
+        self.assertRaises(ValueError,
+                          lambda: hblock.connect(blk))
+
+    def test_023_connect_single_twice(self):
+        hblock = gr.top_block("test_block")
+        blk = gr.hier_block2("block",
+                             gr.io_signature(0, 0, 0),
+                             gr.io_signature(0, 0, 0))
+        hblock.connect(blk)
+        self.assertRaises(ValueError,
+                          lambda: hblock.connect(blk))
+
+    def test_024_disconnect_single(self):
+        hblock = gr.top_block("test_block")
+        blk = gr.hier_block2("block",
+                             gr.io_signature(0, 0, 0),
+                             gr.io_signature(0, 0, 0))
+        hblock.connect(blk)
+        hblock.disconnect(blk)
+
+    def test_025_disconnect_single_not_connected(self):
+        hblock = gr.top_block("test_block")
+        blk = gr.hier_block2("block",
+                             gr.io_signature(0, 0, 0),
+                             gr.io_signature(0, 0, 0))
+        self.assertRaises(ValueError,
+                          lambda: hblock.disconnect(blk))
+
+    def test_026_run_single(self):
+        expected_data = (1.0,)
+        tb = gr.top_block("top_block")
+        hb = gr.hier_block2("block",
+                            gr.io_signature(0, 0, 0),
+                            gr.io_signature(0, 0, 0))
+        src = blocks.vector_source_f(expected_data)
+        dst = blocks.vector_sink_f()
+        hb.connect(src, dst)
+        tb.connect(hb)
+        tb.run()
+        self.assertEquals(expected_data, dst.data())
+
+    def test_027a_internally_unconnected_input(self):
+        tb = gr.top_block()
+        hb = gr.hier_block2("block",
+                            gr.io_signature(1, 1, 1),
+                            gr.io_signature(1, 1, 1))
+        hsrc = blocks.vector_source_b([1,])
+        hb.connect(hsrc, hb) # wire output internally
+        src = blocks.vector_source_b([1, ])
+        dst = blocks.vector_sink_b()
+        tb.connect(src, hb, dst) # hb's input is not connected internally
+        self.assertRaises(RuntimeError,
+                          lambda: tb.run())
+
+    def test_027b_internally_unconnected_output(self):
+        tb = gr.top_block()
+
+        hb = gr.hier_block2("block",
+                            gr.io_signature(1, 1, 1),
+                            gr.io_signature(1, 1, 1))
+        hdst = blocks.vector_sink_b()
+        hb.connect(hb, hdst) # wire input internally
+        src = blocks.vector_source_b([1, ])
+        dst = blocks.vector_sink_b()
+        tb.connect(src, hb, dst) # hb's output is not connected internally
+        self.assertRaises(RuntimeError,
+                          lambda: tb.run())
+
+    def test_027c_fully_unconnected_output(self):
+        tb = gr.top_block()
+        hb = gr.hier_block2("block",
+                            gr.io_signature(1, 1, 1),
+                            gr.io_signature(1, 1, 1))
+        hsrc = blocks.vector_sink_b()
+        hb.connect(hb, hsrc) # wire input internally
+        src = blocks.vector_source_b([1, ])
+        dst = blocks.vector_sink_b()
+        tb.connect(src, hb) # hb's output is not connected internally or externally
+        self.assertRaises(RuntimeError,
+                          lambda: tb.run())
+
+    def test_027d_fully_unconnected_input(self):
+        tb = gr.top_block()
+        hb = gr.hier_block2("block",
+                            gr.io_signature(1, 1, 1),
+                            gr.io_signature(1, 1, 1))
+        hdst = blocks.vector_source_b([1,])
+        hb.connect(hdst, hb) # wire output internally
+        dst = blocks.vector_sink_b()
+        tb.connect(hb, dst) # hb's input is not connected internally or externally
+        self.assertRaises(RuntimeError,
+                          lambda: tb.run())
+
+    def test_028_singleton_reconfigure(self):
+        tb = gr.top_block()
+        hb = gr.hier_block2("block",
+                            gr.io_signature(0, 0, 0), gr.io_signature(0, 0, 0))
+        src = blocks.vector_source_b([1, ])
+        dst = blocks.vector_sink_b()
+        hb.connect(src, dst)
+        tb.connect(hb) # Singleton connect
+        tb.lock()
+        tb.disconnect_all()
+        tb.connect(src, dst)
+        tb.unlock()
+
+    def test_029_singleton_disconnect(self):
+        tb = gr.top_block()
+        src = blocks.vector_source_b([1, ])
+        dst = blocks.vector_sink_b()
+        tb.connect(src, dst)
+        tb.disconnect(src)   # Singleton disconnect
+        tb.connect(src, dst)
+        tb.run()
+        self.assertEquals(dst.data(), (1,))
+
+    def test_030_nested_input(self):
+        tb = gr.top_block()
+        src = blocks.vector_source_b([1,])
+        hb1 = gr.hier_block2("hb1",
+                             gr.io_signature(1, 1, gr.sizeof_char),
+                             gr.io_signature(0, 0, 0))
+        hb2 = gr.hier_block2("hb2",
+                             gr.io_signature(1, 1, gr.sizeof_char),
+                             gr.io_signature(0, 0, 0))
+        dst = blocks.vector_sink_b()
+        tb.connect(src, hb1)
+        hb1.connect(hb1, hb2)
+        hb2.connect(hb2, blocks.copy(gr.sizeof_char), dst)
+        tb.run()
+        self.assertEquals(dst.data(), (1,))
+
+    def test_031_multiple_internal_inputs(self):
+        tb = gr.top_block()
+        src = blocks.vector_source_f([1.0,])
+        hb = gr.hier_block2("hb",
+                            gr.io_signature(1, 1, gr.sizeof_float),
+                            gr.io_signature(1, 1, gr.sizeof_float))
+        m1 = multiply_const_ff(1.0)
+        m2 = multiply_const_ff(2.0)
+        add = add_ff()
+        hb.connect(hb, m1)       # m1 is connected to hb external input #0
+        hb.connect(hb, m2)       # m2 is also connected to hb external input #0
+        hb.connect(m1, (add, 0))
+        hb.connect(m2, (add, 1))
+        hb.connect(add, hb)      # add is connected to hb external output #0
+        dst = blocks.vector_sink_f()
+        tb.connect(src, hb, dst)
+        tb.run()
+        self.assertEquals(dst.data(), (3.0,))
+
+    def test_032_nested_multiple_internal_inputs(self):
+        tb = gr.top_block()
+        src = blocks.vector_source_f([1.0,])
+        hb = gr.hier_block2("hb",
+                            gr.io_signature(1, 1, gr.sizeof_float),
+                            gr.io_signature(1, 1, gr.sizeof_float))
+        hb2 = gr.hier_block2("hb",
+                            gr.io_signature(1, 1, gr.sizeof_float),
+                            gr.io_signature(1, 1, gr.sizeof_float))
+
+        m1 = multiply_const_ff(1.0)
+        m2 = multiply_const_ff(2.0)
+        add = add_ff()
+        hb2.connect(hb2, m1)       # m1 is connected to hb2 external input #0
+        hb2.connect(hb2, m2)       # m2 is also connected to hb2 external input #0
+        hb2.connect(m1, (add, 0))
+        hb2.connect(m2, (add, 1))
+        hb2.connect(add, hb2)      # add is connected to hb2 external output #0
+        hb.connect(hb, hb2, hb)   # hb as hb2 as nested internal block
+        dst = blocks.vector_sink_f()
+        tb.connect(src, hb, dst)
+        tb.run()
+        self.assertEquals(dst.data(), (3.0,))
+
+
+if __name__ == "__main__":
+    gr_unittest.run(test_hier_block2, "test_hier_block2.xml")
diff --git a/gr-blocks/python/qa_integrate.py b/gr-blocks/python/qa_integrate.py
index c404f1b309..9d9d9345f4 100755
--- a/gr-blocks/python/qa_integrate.py
+++ b/gr-blocks/python/qa_integrate.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2008,2010 Free Software Foundation, Inc.
+# Copyright 2008,2010,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 import math
 
 class test_integrate (gr_unittest.TestCase):
@@ -35,9 +35,9 @@ class test_integrate (gr_unittest.TestCase):
     def test_000_ss(self):
 	src_data = (1, 2, 3, 4, 5, 6)
 	dst_data = (6, 15)
-	src = gr.vector_source_s(src_data)
-	itg = blocks_swig.integrate_ss(3)
-	dst = gr.vector_sink_s()
+	src = blocks.vector_source_s(src_data)
+	itg = blocks.integrate_ss(3)
+	dst = blocks.vector_sink_s()
 	self.tb.connect(src, itg, dst)
 	self.tb.run()
 	self.assertEqual(dst_data, dst.data())
@@ -45,9 +45,9 @@ class test_integrate (gr_unittest.TestCase):
     def test_001_ii(self):
 	src_data = (1, 2, 3, 4, 5, 6)
 	dst_data = (6, 15)
-	src = gr.vector_source_i(src_data)
-	itg = blocks_swig.integrate_ii(3)
-	dst = gr.vector_sink_i()
+	src = blocks.vector_source_i(src_data)
+	itg = blocks.integrate_ii(3)
+	dst = blocks.vector_sink_i()
 	self.tb.connect(src, itg, dst)
 	self.tb.run()
 	self.assertEqual(dst_data, dst.data())
@@ -55,9 +55,9 @@ class test_integrate (gr_unittest.TestCase):
     def test_002_ff(self):
 	src_data = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]
 	dst_data = [6.0, 15.0]
-	src = gr.vector_source_f(src_data)
-	itg = blocks_swig.integrate_ff(3)
-	dst = gr.vector_sink_f()
+	src = blocks.vector_source_f(src_data)
+	itg = blocks.integrate_ff(3)
+	dst = blocks.vector_sink_f()
 	self.tb.connect(src, itg, dst)
 	self.tb.run()
 	self.assertFloatTuplesAlmostEqual(dst_data, dst.data(), 6)
@@ -65,9 +65,9 @@ class test_integrate (gr_unittest.TestCase):
     def test_003_cc(self):
 	src_data = [1.0+1.0j, 2.0+2.0j, 3.0+3.0j, 4.0+4.0j, 5.0+5.0j, 6.0+6.0j]
 	dst_data = [6.0+6.0j, 15.0+15.0j]
-	src = gr.vector_source_c(src_data)
-	itg = blocks_swig.integrate_cc(3)
-	dst = gr.vector_sink_c()
+	src = blocks.vector_source_c(src_data)
+	itg = blocks.integrate_cc(3)
+	dst = blocks.vector_sink_c()
 	self.tb.connect(src, itg, dst)
 	self.tb.run()
 	self.assertComplexTuplesAlmostEqual(dst_data, dst.data(), 6)
diff --git a/gr-blocks/python/qa_interleave.py b/gr-blocks/python/qa_interleave.py
index 376d487b10..a65824ec33 100755
--- a/gr-blocks/python/qa_interleave.py
+++ b/gr-blocks/python/qa_interleave.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 import math
 
 class test_interleave (gr_unittest.TestCase):
@@ -34,12 +34,12 @@ class test_interleave (gr_unittest.TestCase):
 
     def test_int_001 (self):
         lenx = 64
-        src0 = gr.vector_source_f (range (0, lenx, 4))
-        src1 = gr.vector_source_f (range (1, lenx, 4))
-        src2 = gr.vector_source_f (range (2, lenx, 4))
-        src3 = gr.vector_source_f (range (3, lenx, 4))
-        op = blocks_swig.interleave (gr.sizeof_float)
-        dst = gr.vector_sink_f ()
+        src0 = blocks.vector_source_f (range (0, lenx, 4))
+        src1 = blocks.vector_source_f (range (1, lenx, 4))
+        src2 = blocks.vector_source_f (range (2, lenx, 4))
+        src3 = blocks.vector_source_f (range (3, lenx, 4))
+        op = blocks.interleave (gr.sizeof_float)
+        dst = blocks.vector_sink_f ()
 
         self.tb.connect (src0, (op, 0))
         self.tb.connect (src1, (op, 1))
@@ -53,12 +53,12 @@ class test_interleave (gr_unittest.TestCase):
 
     def test_deint_001 (self):
         lenx = 64
-        src = gr.vector_source_f (range (lenx))
-        op = blocks_swig.deinterleave (gr.sizeof_float)
-        dst0 = gr.vector_sink_f ()
-        dst1 = gr.vector_sink_f ()
-        dst2 = gr.vector_sink_f ()
-        dst3 = gr.vector_sink_f ()
+        src = blocks.vector_source_f (range (lenx))
+        op = blocks.deinterleave (gr.sizeof_float)
+        dst0 = blocks.vector_sink_f ()
+        dst1 = blocks.vector_sink_f ()
+        dst2 = blocks.vector_sink_f ()
+        dst3 = blocks.vector_sink_f ()
 
         self.tb.connect (src, op)
         self.tb.connect ((op, 0), dst0)
diff --git a/gr-blocks/python/qa_keep_m_in_n.py b/gr-blocks/python/qa_keep_m_in_n.py
index 0898217ba9..22e8c45138 100755
--- a/gr-blocks/python/qa_keep_m_in_n.py
+++ b/gr-blocks/python/qa_keep_m_in_n.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2008,2010,2012 Free Software Foundation, Inc.
+# Copyright 2008,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -20,7 +20,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 import sys
 import random
 
@@ -35,15 +35,15 @@ class test_keep_m_in_n(gr_unittest.TestCase):
     def test_001(self):
         self.maxDiff = None;
         tb = gr.top_block()
-        src = gr.vector_source_b( range(0,100) )
+        src = blocks.vector_source_b( range(0,100) )
 
         # itemsize, M, N, offset
-        km2 = blocks_swig.keep_m_in_n( 1, 1, 2, 0 );
-        km3 = blocks_swig.keep_m_in_n( 1, 1, 3, 1 );
-        km7 = blocks_swig.keep_m_in_n( 1, 1, 7, 2 );
-        snk2 = gr.vector_sink_b();
-        snk3 = gr.vector_sink_b();
-        snk7 = gr.vector_sink_b();
+        km2 = blocks.keep_m_in_n( 1, 1, 2, 0 );
+        km3 = blocks.keep_m_in_n( 1, 1, 3, 1 );
+        km7 = blocks.keep_m_in_n( 1, 1, 7, 2 );
+        snk2 = blocks.vector_sink_b();
+        snk3 = blocks.vector_sink_b();
+        snk7 = blocks.vector_sink_b();
         tb.connect(src,km2,snk2);
         tb.connect(src,km3,snk3);
         tb.connect(src,km7,snk7);
diff --git a/gr-blocks/python/qa_keep_one_in_n.py b/gr-blocks/python/qa_keep_one_in_n.py
index 8c5f44b84b..f06ed33d6b 100755
--- a/gr-blocks/python/qa_keep_one_in_n.py
+++ b/gr-blocks/python/qa_keep_one_in_n.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 
 class test_keep_one_in_n(gr_unittest.TestCase):
 
@@ -34,9 +34,9 @@ class test_keep_one_in_n(gr_unittest.TestCase):
     def test_001(self):
         src_data = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
         expected_data = (5, 10)
-        src = gr.vector_source_b(src_data);
-        op = blocks_swig.keep_one_in_n(gr.sizeof_char, 5)
-        dst = gr.vector_sink_b()
+        src = blocks.vector_source_b(src_data);
+        op = blocks.keep_one_in_n(gr.sizeof_char, 5)
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(dst.data(), expected_data)
diff --git a/gr-blocks/python/qa_max.py b/gr-blocks/python/qa_max.py
index 4af70bd4be..982f4b5590 100755
--- a/gr-blocks/python/qa_max.py
+++ b/gr-blocks/python/qa_max.py
@@ -36,10 +36,10 @@ class test_max(gr_unittest.TestCase):
         src_data = (0,0.2,-0.3,0,12,0)
         expected_result = (float(max(src_data)),)
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         s2v = blocks.stream_to_vector(gr.sizeof_float, len(src_data))
         op = blocks.max_ff(len(src_data))
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         self.tb.connect(src, s2v, op, dst)
         self.tb.run()
@@ -50,10 +50,10 @@ class test_max(gr_unittest.TestCase):
 	src_data=(-100,-99,-98,-97,-96,-1)
 	expected_result = (float(max(src_data)),)
 
-	src = gr.vector_source_f(src_data)
+	src = blocks.vector_source_f(src_data)
 	s2v = blocks.stream_to_vector(gr.sizeof_float, len(src_data))
 	op = blocks.max_ff(len(src_data))
-	dst = gr.vector_sink_f()
+	dst = blocks.vector_sink_f()
 
 	self.tb.connect(src, s2v, op, dst)
 	self.tb.run()
diff --git a/gr-blocks/python/qa_message.py b/gr-blocks/python/qa_message.py
index a556f65cee..27cf186ed3 100755
--- a/gr-blocks/python/qa_message.py
+++ b/gr-blocks/python/qa_message.py
@@ -93,8 +93,8 @@ class test_message(gr_unittest.TestCase):
 
     def test_300(self):
         input_data = (0,1,2,3,4,5,6,7,8,9)
-        src = gr.vector_source_b(input_data)
-        dst = gr.vector_sink_b()
+        src = blocks.vector_source_b(input_data)
+        dst = blocks.vector_sink_b()
 	tb = gr.top_block()
         tb.connect(src, dst)
         tb.run()
@@ -103,7 +103,7 @@ class test_message(gr_unittest.TestCase):
     def test_301(self):
         # Use itemsize, limit constructor
         src = blocks.message_source(gr.sizeof_char)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 	tb = gr.top_block()
         tb.connect(src, dst)
         src.msgq().insert_tail(gr.message_from_string('01234'))
@@ -118,7 +118,7 @@ class test_message(gr_unittest.TestCase):
         # Use itemsize, msgq constructor
         msgq = gr.msg_queue()
         src = blocks.message_source(gr.sizeof_char, msgq)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 	tb = gr.top_block()
         tb.connect(src, dst)
         src.msgq().insert_tail(gr.message_from_string('01234'))
diff --git a/gr-blocks/python/qa_moving_average.py b/gr-blocks/python/qa_moving_average.py
index 169b4746c2..d3fbdbbfdf 100644
--- a/gr-blocks/python/qa_moving_average.py
+++ b/gr-blocks/python/qa_moving_average.py
@@ -53,9 +53,9 @@ class test_moving_average(gr_unittest.TestCase):
         data = make_random_float_tuple(N, 1)
         expected_result = N*[0,]
 
-        src = gr.vector_source_f(data, False)
+        src = blocks.vector_source_f(data, False)
         op  = blocks.moving_average_ff(100, 0.001)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         tb.connect(src, op)
         tb.connect(op, dst)
@@ -74,9 +74,9 @@ class test_moving_average(gr_unittest.TestCase):
         data = make_random_complex_tuple(N, 1)
         expected_result = N*[0,]
 
-        src = gr.vector_source_c(data, False)
+        src = blocks.vector_source_c(data, False)
         op  = blocks.moving_average_cc(100, 0.001)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
 
         tb.connect(src, op)
         tb.connect(op, dst)
diff --git a/gr-blocks/python/qa_multiply_conjugate.py b/gr-blocks/python/qa_multiply_conjugate.py
index f51563f854..a18d80324c 100644
--- a/gr-blocks/python/qa_multiply_conjugate.py
+++ b/gr-blocks/python/qa_multiply_conjugate.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 
 class test_multiply_conjugate (gr_unittest.TestCase):
 
@@ -42,10 +42,10 @@ class test_multiply_conjugate (gr_unittest.TestCase):
         exp_data = (12+0j, 8+0j, 12+0j, 8+0j,
                     12+0j, 8+0j, 12+0j, 8+0j,
                     0+0j)
-        src0 = gr.vector_source_c(src_data0)
-        src1 = gr.vector_source_c(src_data1)
-        op = blocks_swig.multiply_conjugate_cc ()
-        dst = gr.vector_sink_c ()
+        src0 = blocks.vector_source_c(src_data0)
+        src1 = blocks.vector_source_c(src_data1)
+        op = blocks.multiply_conjugate_cc ()
+        dst = blocks.vector_sink_c ()
 
         self.tb.connect(src0, (op,0))
         self.tb.connect(src1, (op,1))
diff --git a/gr-blocks/python/qa_mute.py b/gr-blocks/python/qa_mute.py
index 96c57b2ed1..0c10846333 100755
--- a/gr-blocks/python/qa_mute.py
+++ b/gr-blocks/python/qa_mute.py
@@ -33,9 +33,9 @@ class test_mute(gr_unittest.TestCase):
 
     def help_ii(self, src_data, exp_data, op):
         for s in zip(range(len(src_data)), src_data):
-            src = gr.vector_source_i(s[1])
+            src = blocks.vector_source_i(s[1])
             self.tb.connect(src, (op, s[0]))
-        dst = gr.vector_sink_i()
+        dst = blocks.vector_sink_i()
         self.tb.connect(op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -43,9 +43,9 @@ class test_mute(gr_unittest.TestCase):
 
     def help_ff(self, src_data, exp_data, op):
         for s in zip(range(len(src_data)), src_data):
-            src = gr.vector_source_f(s[1])
+            src = blocks.vector_source_f(s[1])
             self.tb.connect(src, (op, s[0]))
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -53,9 +53,9 @@ class test_mute(gr_unittest.TestCase):
 
     def help_cc(self, src_data, exp_data, op):
         for s in zip(range(len(src_data)), src_data):
-            src = gr.vector_source_c(s[1])
+            src = blocks.vector_source_c(s[1])
             self.tb.connect(src, (op, s[0]))
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(op, dst)
         self.tb.run()
         result_data = dst.data()
diff --git a/gr-blocks/python/qa_nlog10.py b/gr-blocks/python/qa_nlog10.py
index cc2a3e8cc5..a61313cacc 100755
--- a/gr-blocks/python/qa_nlog10.py
+++ b/gr-blocks/python/qa_nlog10.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2005,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2005,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 
 class test_nlog10(gr_unittest.TestCase):
 
@@ -34,9 +34,9 @@ class test_nlog10(gr_unittest.TestCase):
     def test_001(self):
         src_data = (-10, 0, 10, 100, 1000, 10000, 100000)
         expected_result = (-180, -180, 10, 20, 30, 40, 50)
-        src = gr.vector_source_f(src_data)
-        op = blocks_swig.nlog10_ff(10)
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_f(src_data)
+        op = blocks.nlog10_ff(10)
+        dst = blocks.vector_sink_f()
         self.tb.connect (src, op, dst)
         self.tb.run()
         result_data = dst.data()
diff --git a/gr-blocks/python/qa_pack_k_bits.py b/gr-blocks/python/qa_pack_k_bits.py
index cd55d2f200..51152889f6 100755
--- a/gr-blocks/python/qa_pack_k_bits.py
+++ b/gr-blocks/python/qa_pack_k_bits.py
@@ -35,9 +35,9 @@ class test_pack(gr_unittest.TestCase):
     def test_001(self):
         src_data =              (1,0,1,1,0,1,1,0)
         expected_results =      (1,0,1,1,0,1,1,0)
-        src = gr.vector_source_b(src_data,False)
+        src = blocks.vector_source_b(src_data,False)
         op = blocks.pack_k_bits_bb(1)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_results, dst.data())
@@ -45,9 +45,9 @@ class test_pack(gr_unittest.TestCase):
     def test_002(self):
         src_data =              (1,0,1,1,0,0,0,1)
         expected_results =      (  2,  3,  0,  1)
-        src = gr.vector_source_b(src_data,False)
+        src = blocks.vector_source_b(src_data,False)
         op = blocks.pack_k_bits_bb(2)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         #self.assertEqual(expected_results, dst.data())
@@ -55,10 +55,10 @@ class test_pack(gr_unittest.TestCase):
 
     def test_003(self):
         src_data = expected_results = map(lambda x: random.randint(0,3), range(10));
-        src = gr.vector_source_b( src_data );
+        src = blocks.vector_source_b( src_data );
         pack = blocks.pack_k_bits_bb(2);
         unpack = blocks.unpack_k_bits_bb(2);
-        snk = gr.vector_sink_b();
+        snk = blocks.vector_sink_b();
         self.tb.connect(src,unpack,pack,snk);
         self.tb.run()
         self.assertEqual(list(expected_results), list(snk.data()));
diff --git a/gr-blocks/python/qa_packed_to_unpacked.py b/gr-blocks/python/qa_packed_to_unpacked.py
index d84f5dbd37..23745d3859 100755
--- a/gr-blocks/python/qa_packed_to_unpacked.py
+++ b/gr-blocks/python/qa_packed_to_unpacked.py
@@ -35,9 +35,9 @@ class test_packing(gr_unittest.TestCase):
     def test_001(self):
         src_data = (0x80,)
         expected_results = (1,0,0,0,0,0,0,0)
-        src = gr.vector_source_b(src_data, False)
+        src = blocks.vector_source_b(src_data, False)
         op = blocks.packed_to_unpacked_bb(1, gr.GR_MSB_FIRST)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
@@ -48,9 +48,9 @@ class test_packing(gr_unittest.TestCase):
     def test_002(self):
         src_data = (0x80,)
         expected_results = (0,0,0,0,0,0,0,1)
-        src = gr.vector_source_b(src_data, False)
+        src = blocks.vector_source_b(src_data, False)
         op = blocks.packed_to_unpacked_bb(1, gr.GR_LSB_FIRST)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
@@ -61,9 +61,9 @@ class test_packing(gr_unittest.TestCase):
     def test_003(self):
         src_data = (0x11,)
         expected_results = (4, 2)
-        src = gr.vector_source_b(src_data, False)
+        src = blocks.vector_source_b(src_data, False)
         op = blocks.packed_to_unpacked_bb(3, gr.GR_LSB_FIRST)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
@@ -74,9 +74,9 @@ class test_packing(gr_unittest.TestCase):
     def test_004(self):
         src_data = (0x11,)
         expected_results = (0, 4)
-        src = gr.vector_source_b(src_data, False)
+        src = blocks.vector_source_b(src_data, False)
         op = blocks.packed_to_unpacked_bb(3, gr.GR_MSB_FIRST)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
@@ -87,9 +87,9 @@ class test_packing(gr_unittest.TestCase):
     def test_005(self):
         src_data = (1,0,0,0,0,0,1,0,0,1,0,1,1,0,1,0)
         expected_results = (0x82, 0x5a)
-        src = gr.vector_source_b(src_data, False)
+        src = blocks.vector_source_b(src_data, False)
         op = blocks.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
@@ -100,9 +100,9 @@ class test_packing(gr_unittest.TestCase):
     def test_006(self):
         src_data = (0,1,0,0,0,0,0,1,0,1,0,1,1,0,1,0)
         expected_results = (0x82, 0x5a)
-        src = gr.vector_source_b(src_data, False)
+        src = blocks.vector_source_b(src_data, False)
         op = blocks.unpacked_to_packed_bb(1, gr.GR_LSB_FIRST)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
@@ -113,9 +113,9 @@ class test_packing(gr_unittest.TestCase):
     def test_007(self):
         src_data = (4, 2, 0,0,0)
         expected_results = (0x11,)
-        src = gr.vector_source_b(src_data, False)
+        src = blocks.vector_source_b(src_data, False)
         op = blocks.unpacked_to_packed_bb(3, gr.GR_LSB_FIRST)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
@@ -126,9 +126,9 @@ class test_packing(gr_unittest.TestCase):
     def test_008(self):
         src_data = (0, 4, 2,0,0)
         expected_results = (0x11,)
-        src = gr.vector_source_b(src_data,False)
+        src = blocks.vector_source_b(src_data,False)
         op = blocks.unpacked_to_packed_bb(3, gr.GR_MSB_FIRST)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
@@ -144,10 +144,10 @@ class test_packing(gr_unittest.TestCase):
         src_data = tuple(src_data)
         expected_results = src_data
 
-        src = gr.vector_source_b(tuple(src_data), False)
+        src = blocks.vector_source_b(tuple(src_data), False)
         op1 = blocks.packed_to_unpacked_bb(3, gr.GR_MSB_FIRST)
         op2 = blocks.unpacked_to_packed_bb(3, gr.GR_MSB_FIRST)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op1, op2)
         self.tb.connect(op2, dst)
@@ -162,10 +162,10 @@ class test_packing(gr_unittest.TestCase):
             src_data.append((random.randint(0,255)))
         src_data = tuple(src_data)
         expected_results = src_data
-        src = gr.vector_source_b(tuple(src_data), False)
+        src = blocks.vector_source_b(tuple(src_data), False)
         op1 = blocks.packed_to_unpacked_bb(7, gr.GR_MSB_FIRST)
         op2 = blocks.unpacked_to_packed_bb(7, gr.GR_MSB_FIRST)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op1, op2)
         self.tb.connect(op2, dst)
@@ -180,10 +180,10 @@ class test_packing(gr_unittest.TestCase):
             src_data.append((random.randint(0,255)))
         src_data = tuple(src_data)
         expected_results = src_data
-        src = gr.vector_source_b(tuple(src_data),False)
+        src = blocks.vector_source_b(tuple(src_data),False)
         op1 = blocks.packed_to_unpacked_bb(7, gr.GR_LSB_FIRST)
         op2 = blocks.unpacked_to_packed_bb(7, gr.GR_LSB_FIRST)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op1, op2)
         self.tb.connect(op2, dst)
@@ -200,10 +200,10 @@ class test_packing(gr_unittest.TestCase):
             src_data.append((random.randint(-2**15,2**15-1)))
         src_data = tuple(src_data)
         expected_results = src_data
-        src = gr.vector_source_s(tuple(src_data), False)
+        src = blocks.vector_source_s(tuple(src_data), False)
         op1 = blocks.packed_to_unpacked_ss(1, gr.GR_MSB_FIRST)
         op2 = blocks.unpacked_to_packed_ss(1, gr.GR_MSB_FIRST)
-        dst = gr.vector_sink_s()
+        dst = blocks.vector_sink_s()
 
         self.tb.connect(src, op1, op2)
         self.tb.connect(op2, dst)
@@ -218,10 +218,10 @@ class test_packing(gr_unittest.TestCase):
             src_data.append((random.randint(-2**15,2**15-1)))
         src_data = tuple(src_data)
         expected_results = src_data
-        src = gr.vector_source_s(tuple(src_data), False)
+        src = blocks.vector_source_s(tuple(src_data), False)
         op1 = blocks.packed_to_unpacked_ss(1, gr.GR_LSB_FIRST)
         op2 = blocks.unpacked_to_packed_ss(1, gr.GR_LSB_FIRST)
-        dst = gr.vector_sink_s()
+        dst = blocks.vector_sink_s()
 
         self.tb.connect(src, op1, op2)
         self.tb.connect(op2, dst)
@@ -236,10 +236,10 @@ class test_packing(gr_unittest.TestCase):
             src_data.append((random.randint(-2**15,2**15-1)))
         src_data = tuple(src_data)
         expected_results = src_data
-        src = gr.vector_source_s(tuple(src_data), False)
+        src = blocks.vector_source_s(tuple(src_data), False)
         op1 = blocks.packed_to_unpacked_ss(8, gr.GR_MSB_FIRST)
         op2 = blocks.unpacked_to_packed_ss(8, gr.GR_MSB_FIRST)
-        dst = gr.vector_sink_s()
+        dst = blocks.vector_sink_s()
 
         self.tb.connect(src, op1, op2)
         self.tb.connect(op2, dst)
@@ -254,10 +254,10 @@ class test_packing(gr_unittest.TestCase):
             src_data.append((random.randint(-2**15,2**15-1)))
         src_data = tuple(src_data)
         expected_results = src_data
-        src = gr.vector_source_s(tuple(src_data), False)
+        src = blocks.vector_source_s(tuple(src_data), False)
         op1 = blocks.packed_to_unpacked_ss(8, gr.GR_LSB_FIRST)
         op2 = blocks.unpacked_to_packed_ss(8, gr.GR_LSB_FIRST)
-        dst = gr.vector_sink_s()
+        dst = blocks.vector_sink_s()
 
         self.tb.connect(src, op1, op2)
         self.tb.connect(op2, dst)
@@ -274,10 +274,10 @@ class test_packing(gr_unittest.TestCase):
             src_data.append((random.randint(-2**31,2**31-1)))
         src_data = tuple(src_data)
         expected_results = src_data
-        src = gr.vector_source_i(tuple(src_data), False)
+        src = blocks.vector_source_i(tuple(src_data), False)
         op1 = blocks.packed_to_unpacked_ii(1, gr.GR_MSB_FIRST)
         op2 = blocks.unpacked_to_packed_ii(1, gr.GR_MSB_FIRST)
-        dst = gr.vector_sink_i()
+        dst = blocks.vector_sink_i()
 
         self.tb.connect(src, op1, op2)
         self.tb.connect(op2, dst)
@@ -292,10 +292,10 @@ class test_packing(gr_unittest.TestCase):
             src_data.append((random.randint(-2**31,2**31-1)))
         src_data = tuple(src_data)
         expected_results = src_data
-        src = gr.vector_source_i(tuple(src_data), False)
+        src = blocks.vector_source_i(tuple(src_data), False)
         op1 = blocks.packed_to_unpacked_ii(1, gr.GR_LSB_FIRST)
         op2 = blocks.unpacked_to_packed_ii(1, gr.GR_LSB_FIRST)
-        dst = gr.vector_sink_i()
+        dst = blocks.vector_sink_i()
 
         self.tb.connect(src, op1, op2)
         self.tb.connect(op2, dst)
@@ -310,10 +310,10 @@ class test_packing(gr_unittest.TestCase):
             src_data.append((random.randint(-2**31,2**31-1)))
         src_data = tuple(src_data)
         expected_results = src_data
-        src = gr.vector_source_i(tuple(src_data), False)
+        src = blocks.vector_source_i(tuple(src_data), False)
         op1 = blocks.packed_to_unpacked_ii(8, gr.GR_MSB_FIRST)
         op2 = blocks.unpacked_to_packed_ii(8, gr.GR_MSB_FIRST)
-        dst = gr.vector_sink_i()
+        dst = blocks.vector_sink_i()
 
         self.tb.connect(src, op1, op2)
         self.tb.connect(op2, dst)
@@ -328,10 +328,10 @@ class test_packing(gr_unittest.TestCase):
             src_data.append((random.randint(-2**31,2**31-1)))
         src_data = tuple(src_data)
         expected_results = src_data
-        src = gr.vector_source_i(tuple(src_data), False)
+        src = blocks.vector_source_i(tuple(src_data), False)
         op1 = blocks.packed_to_unpacked_ii(8, gr.GR_LSB_FIRST)
         op2 = blocks.unpacked_to_packed_ii(8, gr.GR_LSB_FIRST)
-        dst = gr.vector_sink_i()
+        dst = blocks.vector_sink_i()
 
         self.tb.connect(src, op1, op2)
         self.tb.connect(op2, dst)
diff --git a/gr-blocks/python/qa_patterned_interleaver.py b/gr-blocks/python/qa_patterned_interleaver.py
index 3cf29c9178..c960ac2e66 100755
--- a/gr-blocks/python/qa_patterned_interleaver.py
+++ b/gr-blocks/python/qa_patterned_interleaver.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2008,2010 Free Software Foundation, Inc.
+# Copyright 2008,2010,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -37,12 +37,12 @@ class test_patterned_interleaver (gr_unittest.TestCase):
 
     def test_000(self):
         dst_data = [0,0,1,2,0,2,1,0];
-        src0 = gr.vector_source_f(200*[0])
-        src1 = gr.vector_source_f(200*[1])
-        src2 = gr.vector_source_f(200*[2])
+        src0 = blocks.vector_source_f(200*[0])
+        src1 = blocks.vector_source_f(200*[1])
+        src2 = blocks.vector_source_f(200*[2])
         itg = blocks.patterned_interleaver(gr.sizeof_float, dst_data)
-        dst = gr.vector_sink_f()
-        head = gr.head(gr.sizeof_float, 8);
+        dst = blocks.vector_sink_f()
+        head = blocks.head(gr.sizeof_float, 8);
         
         self.tb.connect( src0, (itg,0) );
         self.tb.connect( src1, (itg,1) );
diff --git a/gr-blocks/python/qa_pdu.py b/gr-blocks/python/qa_pdu.py
index c8fc0e5a91..a9d8ea86f3 100755
--- a/gr-blocks/python/qa_pdu.py
+++ b/gr-blocks/python/qa_pdu.py
@@ -39,7 +39,7 @@ class test_pdu(gr_unittest.TestCase):
 
         src = blocks.pdu_to_tagged_stream(blocks.byte_t)
         snk3 = blocks.tagged_stream_to_pdu(blocks.byte_t)
-        snk2 = gr.vector_sink_b()
+        snk2 = blocks.vector_sink_b()
         snk = blocks.tag_debug(1, "test")
         snk.set_display(False)
 
diff --git a/gr-blocks/python/qa_peak_detector.py b/gr-blocks/python/qa_peak_detector.py
index c3ff2548c4..4b28518410 100644
--- a/gr-blocks/python/qa_peak_detector.py
+++ b/gr-blocks/python/qa_peak_detector.py
@@ -40,9 +40,9 @@ class test_peak_detector(gr_unittest.TestCase):
         expected_result = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
                            0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
 
-        src = gr.vector_source_f(data, False)
+        src = blocks.vector_source_f(data, False)
         regen = blocks.peak_detector_fb()
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         tb.connect(src, regen)
         tb.connect(regen, dst)
@@ -61,9 +61,9 @@ class test_peak_detector(gr_unittest.TestCase):
         expected_result = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
                            0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
 
-        src = gr.vector_source_i(data, False)
+        src = blocks.vector_source_i(data, False)
         regen = blocks.peak_detector_ib()
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         tb.connect(src, regen)
         tb.connect(regen, dst)
@@ -82,9 +82,9 @@ class test_peak_detector(gr_unittest.TestCase):
         expected_result = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
                            0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
 
-        src = gr.vector_source_s(data, False)
+        src = blocks.vector_source_s(data, False)
         regen = blocks.peak_detector_sb()
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         tb.connect(src, regen)
         tb.connect(regen, dst)
diff --git a/gr-blocks/python/qa_peak_detector2.py b/gr-blocks/python/qa_peak_detector2.py
index b2d8e318dd..5fcda9be08 100644
--- a/gr-blocks/python/qa_peak_detector2.py
+++ b/gr-blocks/python/qa_peak_detector2.py
@@ -41,9 +41,9 @@ class test_peak_detector2(gr_unittest.TestCase):
                            0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
 
 
-        src = gr.vector_source_f(data, False)
+        src = blocks.vector_source_f(data, False)
         regen = blocks.peak_detector2_fb()
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         tb.connect(src, regen)
         tb.connect(regen, dst)
diff --git a/gr-blocks/python/qa_pipe_fittings.py b/gr-blocks/python/qa_pipe_fittings.py
index 9894a5c211..634638dcdd 100755
--- a/gr-blocks/python/qa_pipe_fittings.py
+++ b/gr-blocks/python/qa_pipe_fittings.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2005,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2005,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -50,13 +50,13 @@ class test_pipe_fittings(gr_unittest.TestCase):
 
         expected_results = calc_expected_result(src_data, n)
         #print "expected results: ", expected_results
-        src = gr.vector_source_i(src_data)
+        src = blocks.vector_source_i(src_data)
         op = blocks.stream_to_streams(gr.sizeof_int, n)
         self.tb.connect(src, op)
 
         dsts = []
         for i in range(n):
-            dst = gr.vector_sink_i()
+            dst = blocks.vector_sink_i()
             self.tb.connect((op, i), (dst, 0))
             dsts.append(dst)
 
@@ -74,10 +74,10 @@ class test_pipe_fittings(gr_unittest.TestCase):
         src_data = tuple(range(src_len))
         expected_results = src_data
 
-        src = gr.vector_source_i(src_data)
+        src = blocks.vector_source_i(src_data)
         op1 = blocks.stream_to_streams(gr.sizeof_int, n)
         op2 = blocks.streams_to_stream(gr.sizeof_int, n)
-        dst = gr.vector_sink_i()
+        dst = blocks.vector_sink_i()
 
         self.tb.connect(src, op1)
         for i in range(n):
@@ -96,11 +96,11 @@ class test_pipe_fittings(gr_unittest.TestCase):
         src_data = tuple(range(src_len))
         expected_results = src_data
 
-        src = gr.vector_source_i(src_data)
+        src = blocks.vector_source_i(src_data)
         op1 = blocks.stream_to_streams(gr.sizeof_int, n)
         op2 = blocks.streams_to_vector(gr.sizeof_int, n)
         op3 = blocks.vector_to_stream(gr.sizeof_int, n)
-        dst = gr.vector_sink_i()
+        dst = blocks.vector_sink_i()
 
         self.tb.connect(src, op1)
         for i in range(n):
@@ -119,11 +119,11 @@ class test_pipe_fittings(gr_unittest.TestCase):
         src_data = tuple(range(src_len))
         expected_results = src_data
 
-        src = gr.vector_source_i(src_data)
+        src = blocks.vector_source_i(src_data)
         op1 = blocks.stream_to_vector(gr.sizeof_int, n)
         op2 = blocks.vector_to_streams(gr.sizeof_int, n)
         op3 = blocks.streams_to_stream(gr.sizeof_int, n)
-        dst = gr.vector_sink_i()
+        dst = blocks.vector_sink_i()
 
         self.tb.connect(src, op1, op2)
         for i in range(n):
diff --git a/gr-blocks/python/qa_probe_signal.py b/gr-blocks/python/qa_probe_signal.py
index 6d25a25087..1cb151bfc0 100644
--- a/gr-blocks/python/qa_probe_signal.py
+++ b/gr-blocks/python/qa_probe_signal.py
@@ -36,7 +36,7 @@ class test_probe_signal(gr_unittest.TestCase):
         repeats = 100
         src_data = [value] * repeats
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         dst = blocks.probe_signal_f()
 
         self.tb.connect(src, dst)
@@ -50,7 +50,7 @@ class test_probe_signal(gr_unittest.TestCase):
         value = [0.5+i for i in range(0, vector_length)]
         src_data = value * repeats
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         s2v = blocks.stream_to_vector(gr.sizeof_float, vector_length)
         dst = blocks.probe_signal_vf(vector_length)
 
diff --git a/gr-blocks/python/qa_python_message_passing.py b/gr-blocks/python/qa_python_message_passing.py
new file mode 100644
index 0000000000..f199d5470f
--- /dev/null
+++ b/gr-blocks/python/qa_python_message_passing.py
@@ -0,0 +1,124 @@
+#!/usr/bin/env python
+#
+# Copyright 2013 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+from gnuradio import gr, gr_unittest
+try: import pmt
+except: from gruel import pmt
+import numpy
+import time
+import blocks_swig as blocks
+
+# Simple block to generate messages
+class message_generator(gr.sync_block):
+    def __init__(self, msg_list, msg_interval):
+        gr.sync_block.__init__(
+            self,
+            name = "message generator",
+            in_sig = [numpy.float32],
+            out_sig = None
+        )
+        self.msg_list = msg_list
+        self.msg_interval = msg_interval
+        self.msg_ctr = 0
+        self.message_port_register_out(pmt.intern('out_port'))
+
+
+    def work(self, input_items, output_items):
+        inLen = len(input_items[0])
+        while self.msg_ctr < len(self.msg_list) and \
+                (self.msg_ctr * self.msg_interval) < \
+                (self.nitems_read(0) + inLen):
+            self.message_port_pub(pmt.intern('out_port'),
+                                  self.msg_list[self.msg_ctr])
+            self.msg_ctr += 1
+        return inLen
+
+# Simple block to consume messages
+class message_consumer(gr.sync_block):
+    def __init__(self):
+        gr.sync_block.__init__(
+            self,
+            name = "message consumer",
+            in_sig = None,
+            out_sig = None
+        )
+        self.msg_list = []
+        self.message_port_register_in(pmt.intern('in_port'))
+        self.set_msg_handler(pmt.intern('in_port'),
+                             self.handle_msg)
+
+    def handle_msg(self, msg):
+        # Create a new PMT from long value and put in list
+        self.msg_list.append(pmt.from_long(pmt.to_long(msg)))
+
+class test_python_message_passing(gr_unittest.TestCase):
+    
+    def setUp(self):
+        self.tb = gr.top_block()
+
+    def tearDown(self):
+        self.tb = None
+
+    def test_000(self):
+        num_msgs = 10
+        msg_interval = 1000
+        msg_list = []
+        for i in range(num_msgs):
+            msg_list.append(pmt.from_long(i))
+
+        # Create vector source with dummy data to trigger messages
+        src_data = []
+        for i in range(num_msgs*msg_interval):
+            src_data.append(float(i))
+        src = blocks.vector_source_f(src_data, False)
+        msg_gen = message_generator(msg_list, msg_interval)
+        msg_cons = message_consumer()
+        
+        # Connect vector source to message gen
+        self.tb.connect(src, msg_gen)
+        
+        # Connect message generator to message consumer
+        self.tb.msg_connect(msg_gen, 'out_port', msg_cons, 'in_port')
+
+        # Verify that the messgae port query functions work
+        self.assertEqual(pmt.symbol_to_string(pmt.vector_ref(
+                    msg_gen.message_ports_out(), 0)), 'out_port')
+        self.assertEqual(pmt.symbol_to_string(pmt.vector_ref(
+                    msg_cons.message_ports_in(), 0)), 'in_port')
+        
+        # Run to verify message passing
+        self.tb.start()
+
+        # Wait for all messages to be sent
+        while msg_gen.msg_ctr < num_msgs:
+            time.sleep(0.5)
+        self.tb.stop()
+        self.tb.wait()               
+        
+        # Verify that the message consumer got all the messages
+        self.assertEqual(num_msgs, len(msg_cons.msg_list))
+        for i in range(num_msgs):
+            self.assertTrue(pmt.equal(msg_list[i], msg_cons.msg_list[i]))
+        
+if __name__ == '__main__':
+    gr_unittest.run(test_python_message_passing, 
+                    'test_python_message_passing.xml')
diff --git a/gr-blocks/python/qa_regenerate.py b/gr-blocks/python/qa_regenerate.py
index a57eeba2bb..0be68d001c 100755
--- a/gr-blocks/python/qa_regenerate.py
+++ b/gr-blocks/python/qa_regenerate.py
@@ -43,9 +43,9 @@ class test_regenerate(gr_unittest.TestCase):
                            1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
 
 
-        src = gr.vector_source_b(data, False)
+        src = blocks.vector_source_b(data, False)
         regen = blocks.regenerate_bb(5, 2)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         tb.connect(src, regen)
         tb.connect(regen, dst)
@@ -73,9 +73,9 @@ class test_regenerate(gr_unittest.TestCase):
         expected_result[119]  = 1
         expected_result[129]  = 1
 
-        src = gr.vector_source_b(data, False)
+        src = blocks.vector_source_b(data, False)
         regen = blocks.regenerate_bb(10, 3)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         tb.connect(src, regen)
         tb.connect(regen, dst)
diff --git a/gr-blocks/python/qa_repack_bits_bb.py b/gr-blocks/python/qa_repack_bits_bb.py
index 3f88df4a68..9da6cf26c6 100755
--- a/gr-blocks/python/qa_repack_bits_bb.py
+++ b/gr-blocks/python/qa_repack_bits_bb.py
@@ -39,9 +39,9 @@ class qa_repack_bits_bb (gr_unittest.TestCase):
         expected_data = (0b1, 0b1, 0b1, 0b0, 0b0, 0b1)
         k = 2
         l = 1
-        src = gr.vector_source_b(src_data, False, 1)
+        src = blocks.vector_source_b(src_data, False, 1)
         repack = blocks.repack_bits_bb(k, l)
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, repack, sink)
         self.tb.run ()
         self.assertEqual(sink.data(), expected_data)
@@ -52,9 +52,9 @@ class qa_repack_bits_bb (gr_unittest.TestCase):
         expected_data = (0b101,) + (0b111,) * 7
         k = 8
         l = 3
-        src = gr.vector_source_b(src_data, False, 1)
+        src = blocks.vector_source_b(src_data, False, 1)
         repack = blocks.repack_bits_bb(k, l)
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, repack, sink)
         self.tb.run ()
         self.assertEqual(sink.data(), expected_data)
@@ -62,12 +62,12 @@ class qa_repack_bits_bb (gr_unittest.TestCase):
     def test_003_lots_of_bytes (self):
         """ Lots and lots of bytes, multiple packer stages """
         src_data = tuple([random.randint(0, 255) for x in range(3*5*7*8 * 10)])
-        src = gr.vector_source_b(src_data, False, 1)
+        src = blocks.vector_source_b(src_data, False, 1)
         repack1 = blocks.repack_bits_bb(8, 3)
         repack2 = blocks.repack_bits_bb(3, 5)
         repack3 = blocks.repack_bits_bb(5, 7)
         repack4 = blocks.repack_bits_bb(7, 8)
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, repack1, repack2, repack3, repack4, sink)
         self.tb.run ()
         self.assertEqual(sink.data(), src_data)
@@ -83,9 +83,9 @@ class qa_repack_bits_bb (gr_unittest.TestCase):
         tag.offset = 0
         tag.key = pmt.string_to_symbol(tag_name)
         tag.value = pmt.from_long(len(src_data))
-        src = gr.vector_source_b(src_data, False, 1, (tag,))
+        src = blocks.vector_source_b(src_data, False, 1, (tag,))
         repack = blocks.repack_bits_bb(k, l, tag_name)
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, repack, sink)
         self.tb.run ()
         self.assertEqual(sink.data(), expected_data)
@@ -108,9 +108,9 @@ class qa_repack_bits_bb (gr_unittest.TestCase):
         tag.offset = 0
         tag.key = pmt.string_to_symbol(tag_name)
         tag.value = pmt.from_long(len(src_data))
-        src = gr.vector_source_b(src_data, False, 1, (tag,))
+        src = blocks.vector_source_b(src_data, False, 1, (tag,))
         repack = blocks.repack_bits_bb(k, l, tag_name, True)
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, repack, sink)
         self.tb.run ()
         self.assertEqual(sink.data(), expected_data)
diff --git a/gr-blocks/python/qa_repeat.py b/gr-blocks/python/qa_repeat.py
index 69fb3ef72d..aa1b1f45f1 100755
--- a/gr-blocks/python/qa_repeat.py
+++ b/gr-blocks/python/qa_repeat.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2008,2010,2012 Free Software Foundation, Inc.
+# Copyright 2008,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 import math
 
 class test_repeat (gr_unittest.TestCase):
@@ -38,9 +38,9 @@ class test_repeat (gr_unittest.TestCase):
 	for n in range(100):
 	    dst_data += [1.0*n, 1.0*n, 1.0*n]
 
-	src = gr.vector_source_f(src_data)
-	rpt = blocks_swig.repeat(gr.sizeof_float, 3)
-	dst = gr.vector_sink_f()
+	src = blocks.vector_source_f(src_data)
+	rpt = blocks.repeat(gr.sizeof_float, 3)
+	dst = blocks.vector_sink_f()
 	self.tb.connect(src, rpt, dst)
 	self.tb.run()
 	self.assertFloatTuplesAlmostEqual(dst_data, dst.data(), 6)
diff --git a/gr-blocks/python/qa_rms.py b/gr-blocks/python/qa_rms.py
index f3386668af..3dac70c1ec 100644
--- a/gr-blocks/python/qa_rms.py
+++ b/gr-blocks/python/qa_rms.py
@@ -50,10 +50,10 @@ class test_rms(gr_unittest.TestCase):
 
         expected_data = amp/math.sqrt(2.0)
 
-        src = gr.vector_source_f(src_data, True)
-        head = gr.head(gr.sizeof_float, N)
+        src = blocks.vector_source_f(src_data, True)
+        head = blocks.head(gr.sizeof_float, N)
         op = blocks.rms_ff(0.0001)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         self.tb.connect(src, head, op, dst)
         self.tb.run()
@@ -68,10 +68,10 @@ class test_rms(gr_unittest.TestCase):
 
         expected_data = amp
 
-        src = gr.vector_source_c(src_data, True)
-        head = gr.head(gr.sizeof_gr_complex, N)
+        src = blocks.vector_source_c(src_data, True)
+        head = blocks.head(gr.sizeof_gr_complex, N)
         op = blocks.rms_cf(0.0001)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         self.tb.connect(src, head, op, dst)
         self.tb.run()
diff --git a/gr-blocks/python/qa_sample_and_hold.py b/gr-blocks/python/qa_sample_and_hold.py
index 59628090d1..87d472a038 100644
--- a/gr-blocks/python/qa_sample_and_hold.py
+++ b/gr-blocks/python/qa_sample_and_hold.py
@@ -37,10 +37,10 @@ class test_sample_and_hold(gr_unittest.TestCase):
         ctrl_data       = 10*[1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0]
         expected_result = 10*(0,0,0,0,4,5,6,7,8,9,9,9,9,9,9,9,9,9)
 
-        src  = gr.vector_source_f(src_data)
-        ctrl = gr.vector_source_b(ctrl_data)
+        src  = blocks.vector_source_f(src_data)
+        ctrl = blocks.vector_source_b(ctrl_data)
         op = blocks.sample_and_hold_ff()
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         self.tb.connect(src,  (op,0))
         self.tb.connect(ctrl, (op,1))
diff --git a/gr-blocks/python/qa_stream_mux.py b/gr-blocks/python/qa_stream_mux.py
index 657bd3d63f..a5004dd8da 100755
--- a/gr-blocks/python/qa_stream_mux.py
+++ b/gr-blocks/python/qa_stream_mux.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2005,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2005,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 import os
 
 class test_stream_mux (gr_unittest.TestCase):
@@ -34,12 +34,12 @@ class test_stream_mux (gr_unittest.TestCase):
         self.tb = None
 
     def help_stream_2ff(self, N, stream_sizes):
-        v0 = gr.vector_source_f(N*[1,], False)
-        v1 = gr.vector_source_f(N*[2,], False)
+        v0 = blocks.vector_source_f(N*[1,], False)
+        v1 = blocks.vector_source_f(N*[2,], False)
 
-        mux = blocks_swig.stream_mux(gr.sizeof_float, stream_sizes)
+        mux = blocks.stream_mux(gr.sizeof_float, stream_sizes)
 
-        dst = gr.vector_sink_f ()
+        dst = blocks.vector_sink_f ()
 
         self.tb.connect (v0, (mux,0))
         self.tb.connect (v1, (mux,1))
@@ -53,12 +53,12 @@ class test_stream_mux (gr_unittest.TestCase):
         r2 = range(N)
         r2.reverse()
 
-        v0 = gr.vector_source_f(r1, False)
-        v1 = gr.vector_source_f(r2, False)
+        v0 = blocks.vector_source_f(r1, False)
+        v1 = blocks.vector_source_f(r2, False)
 
-        mux = blocks_swig.stream_mux(gr.sizeof_float, stream_sizes)
+        mux = blocks.stream_mux(gr.sizeof_float, stream_sizes)
 
-        dst = gr.vector_sink_f ()
+        dst = blocks.vector_sink_f ()
 
         self.tb.connect (v0, (mux,0))
         self.tb.connect (v1, (mux,1))
diff --git a/gr-blocks/python/qa_stretch.py b/gr-blocks/python/qa_stretch.py
index 078b404dbf..94bb6e0353 100755
--- a/gr-blocks/python/qa_stretch.py
+++ b/gr-blocks/python/qa_stretch.py
@@ -41,13 +41,13 @@ class test_stretch(gr_unittest.TestCase):
         expected_result0 = 10*[0.05,]
         expected_result1 = 10*[0.1,]
 
-        src0 = gr.vector_source_f(data0, False)
-        src1 = gr.vector_source_f(data1, False)
+        src0 = blocks.vector_source_f(data0, False)
+        src1 = blocks.vector_source_f(data1, False)
         inter = blocks.streams_to_vector(gr.sizeof_float, 2)
         op = blocks.stretch_ff(0.1, 2)
         deinter = blocks.vector_to_streams(gr.sizeof_float, 2)
-        dst0 = gr.vector_sink_f()
-        dst1 = gr.vector_sink_f()
+        dst0 = blocks.vector_sink_f()
+        dst1 = blocks.vector_sink_f()
         
         tb.connect(src0, (inter,0))
         tb.connect(src1, (inter,1))
diff --git a/gr-blocks/python/qa_tag_debug.py b/gr-blocks/python/qa_tag_debug.py
index ad85daebcc..52864d34fb 100755
--- a/gr-blocks/python/qa_tag_debug.py
+++ b/gr-blocks/python/qa_tag_debug.py
@@ -34,7 +34,7 @@ class test_tag_debug(gr_unittest.TestCase):
     def test_001(self):
         # Just run some data through and make sure it doesn't puke.
         src_data = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
-        src = gr.vector_source_i(src_data)
+        src = blocks.vector_source_i(src_data)
         op = blocks.tag_debug(gr.sizeof_int, "tag QA")
         self.tb.connect(src, op)
         self.tb.run()
diff --git a/gr-blocks/python/qa_tag_file_sink.py b/gr-blocks/python/qa_tag_file_sink.py
index 80e41a7dd0..e41e6544fd 100644
--- a/gr-blocks/python/qa_tag_file_sink.py
+++ b/gr-blocks/python/qa_tag_file_sink.py
@@ -35,8 +35,8 @@ class test_tag_file_sink(gr_unittest.TestCase):
     def test_001(self):
         src_data = ( 1,  2,  3,  4,  5,  6,  7,  8,  9,  10)
         trg_data = (-1, -1,  1,  1, -1, -1,  1,  1, -1,  -1)
-        src = gr.vector_source_i(src_data)
-        trg = gr.vector_source_s(trg_data)
+        src = blocks.vector_source_i(src_data)
+        trg = blocks.vector_source_s(trg_data)
         op  = blocks.burst_tagger(gr.sizeof_int)
         snk = blocks.tagged_file_sink(gr.sizeof_int, 1)
         self.tb.connect(src, (op,0))
diff --git a/gr-blocks/python/qa_tagged_stream_mux.py b/gr-blocks/python/qa_tagged_stream_mux.py
index e39f8cac29..1759c44623 100755
--- a/gr-blocks/python/qa_tagged_stream_mux.py
+++ b/gr-blocks/python/qa_tagged_stream_mux.py
@@ -82,10 +82,10 @@ class qa_tagged_stream_mux (gr_unittest.TestCase):
         test_tag_1.offset = 3 # On the first '3' of the 2nd stream
         test_tag_1.value = pmt.to_pmt(23)
 
-        src0 = gr.vector_source_b(datas[0:9], False, 1, len_tags_0 + (test_tag_0,))
-        src1 = gr.vector_source_b(datas[9:],  False, 1, len_tags_1 + (test_tag_1,))
+        src0 = blocks.vector_source_b(datas[0:9], False, 1, len_tags_0 + (test_tag_0,))
+        src1 = blocks.vector_source_b(datas[9:],  False, 1, len_tags_1 + (test_tag_1,))
         tagged_stream_mux = blocks.tagged_stream_mux(gr.sizeof_char, tagname)
-        snk = gr.vector_sink_b()
+        snk = blocks.vector_sink_b()
         self.tb.connect(src0, (tagged_stream_mux, 0))
         self.tb.connect(src1, (tagged_stream_mux, 1))
         self.tb.connect(tagged_stream_mux, snk)
diff --git a/gr-blocks/python/qa_threshold.py b/gr-blocks/python/qa_threshold.py
index f91af739ad..352a14da9e 100644
--- a/gr-blocks/python/qa_threshold.py
+++ b/gr-blocks/python/qa_threshold.py
@@ -38,9 +38,9 @@ class test_threshold(gr_unittest.TestCase):
 
         expected_result = (0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1)
 
-        src = gr.vector_source_f(data, False)
+        src = blocks.vector_source_f(data, False)
         op = blocks.threshold_ff(1, 1)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         tb.connect(src, op)
         tb.connect(op, dst)
diff --git a/gr-blocks/python/qa_transcendental.py b/gr-blocks/python/qa_transcendental.py
index 8174f79630..b57b0b4430 100644
--- a/gr-blocks/python/qa_transcendental.py
+++ b/gr-blocks/python/qa_transcendental.py
@@ -38,9 +38,9 @@ class test_transcendental(gr_unittest.TestCase):
         data = 100*[0,]
         expected_result = 100*[1,]
 
-        src = gr.vector_source_f(data, False)
+        src = blocks.vector_source_f(data, False)
         op = blocks.transcendental("cos", "float")
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         tb.connect(src, op)
         tb.connect(op, dst)
@@ -56,9 +56,9 @@ class test_transcendental(gr_unittest.TestCase):
         data = 100*[3,]
         expected_result = 100*[math.log10(3),]
 
-        src = gr.vector_source_f(data, False)
+        src = blocks.vector_source_f(data, False)
         op = blocks.transcendental("log10", "float")
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         tb.connect(src, op)
         tb.connect(op, dst)
@@ -74,9 +74,9 @@ class test_transcendental(gr_unittest.TestCase):
         data = 100*[3,]
         expected_result = 100*[math.tanh(3),]
 
-        src = gr.vector_source_f(data, False)
+        src = blocks.vector_source_f(data, False)
         op = blocks.transcendental("tanh", "float")
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         tb.connect(src, op)
         tb.connect(op, dst)
diff --git a/gr-blocks/python/qa_type_conversions.py b/gr-blocks/python/qa_type_conversions.py
index eb1b42b636..548ab33926 100755
--- a/gr-blocks/python/qa_type_conversions.py
+++ b/gr-blocks/python/qa_type_conversions.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 from math import sqrt, atan2
 
 class test_type_conversions(gr_unittest.TestCase):
@@ -35,9 +35,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_char_to_float_identity(self):
         src_data = (1, 2, 3, 4, 5)
         expected_data = (1.0, 2.0, 3.0, 4.0, 5.0)
-        src = gr.vector_source_b(src_data)
-        op = blocks_swig.char_to_float()
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_b(src_data)
+        op = blocks.char_to_float()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertFloatTuplesAlmostEqual(expected_data, dst.data())
@@ -45,9 +45,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_char_to_float_scale(self):
         src_data = (1, 2, 3, 4, 5)
         expected_data = (0.5, 1.0, 1.5, 2.0, 2.5)
-        src = gr.vector_source_b(src_data)
-        op = blocks_swig.char_to_float(scale=2.0)
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_b(src_data)
+        op = blocks.char_to_float(scale=2.0)
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertFloatTuplesAlmostEqual(expected_data, dst.data())
@@ -55,9 +55,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_char_to_short(self):
         src_data = (1, 2, 3, 4, 5)
         expected_data = (256, 512, 768, 1024, 1280)
-        src = gr.vector_source_b(src_data)
-        op = blocks_swig.char_to_short()
-        dst = gr.vector_sink_s()
+        src = blocks.vector_source_b(src_data)
+        op = blocks.char_to_short()
+        dst = blocks.vector_sink_s()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -65,9 +65,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_complex_to_interleaved_short(self):
         src_data = (1+2j, 3+4j, 5+6j, 7+8j, 9+10j)
         expected_data = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
-        src = gr.vector_source_c(src_data)
-        op = blocks_swig.complex_to_interleaved_short()
-        dst = gr.vector_sink_s()
+        src = blocks.vector_source_c(src_data)
+        op = blocks.complex_to_interleaved_short()
+        dst = blocks.vector_sink_s()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -75,9 +75,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_complex_to_float_1(self):
         src_data = (1+2j, 3+4j, 5+6j, 7+8j, 9+10j)
         expected_data = (1.0, 3.0, 5.0, 7.0, 9.0)
-        src = gr.vector_source_c(src_data)
-        op = blocks_swig.complex_to_float()
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_c(src_data)
+        op = blocks.complex_to_float()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertFloatTuplesAlmostEqual(expected_data, dst.data())
@@ -86,10 +86,10 @@ class test_type_conversions(gr_unittest.TestCase):
         src_data = (1+2j, 3+4j, 5+6j, 7+8j, 9+10j)
         expected_data1 = (1.0, 3.0, 5.0, 7.0, 9.0)
         expected_data2 = (2.0, 4.0, 6.0, 8.0, 10.0)
-        src = gr.vector_source_c(src_data)
-        op = blocks_swig.complex_to_float()
-        dst1 = gr.vector_sink_f()
-        dst2 = gr.vector_sink_f()
+        src = blocks.vector_source_c(src_data)
+        op = blocks.complex_to_float()
+        dst1 = blocks.vector_sink_f()
+        dst2 = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect((op, 0), dst1)
         self.tb.connect((op, 1), dst2)
@@ -100,9 +100,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_complex_to_real(self):
         src_data = (1+2j, 3+4j, 5+6j, 7+8j, 9+10j)
         expected_data = (1.0, 3.0, 5.0, 7.0, 9.0)
-        src = gr.vector_source_c(src_data)
-        op = blocks_swig.complex_to_real()
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_c(src_data)
+        op = blocks.complex_to_real()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertFloatTuplesAlmostEqual(expected_data, dst.data())
@@ -110,9 +110,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_complex_to_imag(self):
         src_data = (1+2j, 3+4j, 5+6j, 7+8j, 9+10j)
         expected_data = (2.0, 4.0, 6.0, 8.0, 10.0)
-        src = gr.vector_source_c(src_data)
-        op = blocks_swig.complex_to_imag()
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_c(src_data)
+        op = blocks.complex_to_imag()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertFloatTuplesAlmostEqual(expected_data, dst.data())
@@ -120,9 +120,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_complex_to_mag(self):
         src_data = (1+2j, 3-4j, 5+6j, 7-8j, -9+10j)
         expected_data = (sqrt(5), sqrt(25), sqrt(61), sqrt(113), sqrt(181))
-        src = gr.vector_source_c(src_data)
-        op = blocks_swig.complex_to_mag()
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_c(src_data)
+        op = blocks.complex_to_mag()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertFloatTuplesAlmostEqual(expected_data, dst.data(), 5)
@@ -130,9 +130,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_complex_to_mag_squared(self):
         src_data = (1+2j, 3-4j, 5+6j, 7-8j, -9+10j)
         expected_data = (5.0, 25.0, 61.0, 113.0, 181.0)
-        src = gr.vector_source_c(src_data)
-        op = blocks_swig.complex_to_mag_squared()
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_c(src_data)
+        op = blocks.complex_to_mag_squared()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertFloatTuplesAlmostEqual(expected_data, dst.data())
@@ -140,9 +140,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_complex_to_arg(self):
         src_data = (1+2j, 3-4j, 5+6j, 7-8j, -9+10j)
         expected_data = (atan2(2, 1), atan2(-4,3), atan2(6, 5), atan2(-8, 7), atan2(10,-9))
-        src = gr.vector_source_c(src_data)
-        op = blocks_swig.complex_to_arg()
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_c(src_data)
+        op = blocks.complex_to_arg()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertFloatTuplesAlmostEqual(expected_data, dst.data(), 2)
@@ -150,9 +150,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_float_to_char_identity(self):
         src_data = (1.0, 2.0, 3.0, 4.0, 5.0)
         expected_data = (1, 2, 3, 4, 5)
-        src = gr.vector_source_f(src_data)
-        op = blocks_swig.float_to_char()
-        dst = gr.vector_sink_b()
+        src = blocks.vector_source_f(src_data)
+        op = blocks.float_to_char()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -160,9 +160,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_float_to_char_scale(self):
         src_data = (1.0, 2.0, 3.0, 4.0, 5.0)
         expected_data = (5, 10, 15, 20, 25)
-        src = gr.vector_source_f(src_data)
-        op = blocks_swig.float_to_char(1, 5)
-        dst = gr.vector_sink_b()
+        src = blocks.vector_source_f(src_data)
+        op = blocks.float_to_char(1, 5)
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -170,9 +170,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_float_to_complex_1(self):
         src_data = (1.0, 3.0, 5.0, 7.0, 9.0)
         expected_data = (1+0j, 3+0j, 5+0j, 7+0j, 9+0j)
-        src = gr.vector_source_f(src_data)
-        op = blocks_swig.float_to_complex()
-        dst = gr.vector_sink_c()
+        src = blocks.vector_source_f(src_data)
+        op = blocks.float_to_complex()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertFloatTuplesAlmostEqual(expected_data, dst.data())
@@ -181,10 +181,10 @@ class test_type_conversions(gr_unittest.TestCase):
         src1_data = (1.0, 3.0, 5.0, 7.0, 9.0)
         src2_data = (2.0, 4.0, 6.0, 8.0, 10.0)
         expected_data = (1+2j, 3+4j, 5+6j, 7+8j, 9+10j)
-        src1 = gr.vector_source_f(src1_data)
-        src2 = gr.vector_source_f(src2_data)
-        op = blocks_swig.float_to_complex()
-        dst = gr.vector_sink_c()
+        src1 = blocks.vector_source_f(src1_data)
+        src2 = blocks.vector_source_f(src2_data)
+        op = blocks.float_to_complex()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src1, (op, 0))
         self.tb.connect(src2, (op, 1))
         self.tb.connect(op, dst)
@@ -194,9 +194,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_float_to_int_identity(self):
         src_data = (1.0, 2.0, 3.0, 4.0, 5.0)
         expected_data = (1, 2, 3, 4, 5)
-        src = gr.vector_source_f(src_data)
-        op = blocks_swig.float_to_int()
-        dst = gr.vector_sink_i()
+        src = blocks.vector_source_f(src_data)
+        op = blocks.float_to_int()
+        dst = blocks.vector_sink_i()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -204,9 +204,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_float_to_int_scale(self):
         src_data = (1.0, 2.0, 3.0, 4.0, 5.0)
         expected_data = (5, 10, 15, 20, 25)
-        src = gr.vector_source_f(src_data)
-        op = blocks_swig.float_to_int(1, 5)
-        dst = gr.vector_sink_i()
+        src = blocks.vector_source_f(src_data)
+        op = blocks.float_to_int(1, 5)
+        dst = blocks.vector_sink_i()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -214,9 +214,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_float_to_short_identity(self):
         src_data = (1.0, 2.0, 3.0, 4.0, 5.0)
         expected_data = (1, 2, 3, 4, 5)
-        src = gr.vector_source_f(src_data)
-        op = blocks_swig.float_to_short()
-        dst = gr.vector_sink_s()
+        src = blocks.vector_source_f(src_data)
+        op = blocks.float_to_short()
+        dst = blocks.vector_sink_s()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -224,9 +224,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_float_to_short_scale(self):
         src_data = (1.0, 2.0, 3.0, 4.0, 5.0)
         expected_data = (5, 10, 15, 20, 25)
-        src = gr.vector_source_f(src_data)
-        op = blocks_swig.float_to_short(1, 5)
-        dst = gr.vector_sink_s()
+        src = blocks.vector_source_f(src_data)
+        op = blocks.float_to_short(1, 5)
+        dst = blocks.vector_sink_s()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -234,9 +234,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_float_to_uchar(self):
         src_data = (1.0, -2.0, 3.0, -4.0, 256.0)
         expected_data = (1, 0, 3, 0, 255)
-        src = gr.vector_source_f(src_data)
-        op = blocks_swig.float_to_uchar()
-        dst = gr.vector_sink_b()
+        src = blocks.vector_source_f(src_data)
+        op = blocks.float_to_uchar()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -244,9 +244,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_int_to_float_identity(self):
         src_data = (1, 2, 3, 4, 5)
         expected_data = (1.0, 2.0, 3.0, 4.0, 5.0)
-        src = gr.vector_source_i(src_data)
-        op = blocks_swig.int_to_float()
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_i(src_data)
+        op = blocks.int_to_float()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertFloatTuplesAlmostEqual(expected_data, dst.data())
@@ -254,9 +254,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_int_to_float_scale(self):
         src_data = (1, 2, 3, 4, 5)
         expected_data = (0.2, 0.4, 0.6, 0.8, 1.0)
-        src = gr.vector_source_i(src_data)
-        op = blocks_swig.int_to_float(1, 5)
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_i(src_data)
+        op = blocks.int_to_float(1, 5)
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertFloatTuplesAlmostEqual(expected_data, dst.data())
@@ -264,9 +264,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_interleaved_short_to_complex(self):
         src_data = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
         expected_data = (1+2j, 3+4j, 5+6j, 7+8j, 9+10j)
-        src = gr.vector_source_s(src_data)
-        op = blocks_swig.interleaved_short_to_complex()
-        dst = gr.vector_sink_c()
+        src = blocks.vector_source_s(src_data)
+        op = blocks.interleaved_short_to_complex()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -274,9 +274,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_short_to_char(self):
         src_data = (256, 512, 768, 1024, 1280)
         expected_data = (1, 2, 3, 4, 5)
-        src = gr.vector_source_s(src_data)
-        op = blocks_swig.short_to_char()
-        dst = gr.vector_sink_b()
+        src = blocks.vector_source_s(src_data)
+        op = blocks.short_to_char()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -284,9 +284,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_short_to_float_identity(self):
         src_data = (1, 2, 3, 4, 5)
         expected_data = (1.0, 2.0, 3.0, 4.0, 5.0)
-        src = gr.vector_source_s(src_data)
-        op = blocks_swig.short_to_float()
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_s(src_data)
+        op = blocks.short_to_float()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -294,9 +294,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_short_to_float_scale(self):
         src_data = (5, 10, 15, 20, 25)
         expected_data = (1.0, 2.0, 3.0, 4.0, 5.0)
-        src = gr.vector_source_s(src_data)
-        op = blocks_swig.short_to_float(1, 5)
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_s(src_data)
+        op = blocks.short_to_float(1, 5)
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
@@ -304,9 +304,9 @@ class test_type_conversions(gr_unittest.TestCase):
     def test_uchar_to_float(self):
         src_data = (1, 2, 3, 4, 5)
         expected_data = (1.0, 2.0, 3.0, 4.0, 5.0)
-        src = gr.vector_source_b(src_data)
-        op = blocks_swig.uchar_to_float()
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_b(src_data)
+        op = blocks.uchar_to_float()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_data, dst.data())
diff --git a/gr-blocks/python/qa_udp_source_sink.py b/gr-blocks/python/qa_udp_source_sink.py
index 8c5fa28217..ac8a9d0eb1 100644
--- a/gr-blocks/python/qa_udp_source_sink.py
+++ b/gr-blocks/python/qa_udp_source_sink.py
@@ -45,7 +45,7 @@ class test_udp_sink_source(gr_unittest.TestCase):
         n_data = 16
         src_data = [x for x in range(n_data)]
         expected_result = tuple(src_data)
-        src = gr.vector_source_s(src_data, False)
+        src = blocks.vector_source_s(src_data, False)
         udp_snd = blocks.udp_sink(gr.sizeof_short, 'localhost', port)
         self.tb_snd.connect(src, udp_snd)
 
@@ -62,12 +62,12 @@ class test_udp_sink_source(gr_unittest.TestCase):
         n_data = 100
         src_data = [float(x) for x in range(n_data)]
         expected_result = tuple(src_data)
-        src = gr.vector_source_f(src_data, False)
+        src = blocks.vector_source_f(src_data, False)
         udp_snd = blocks.udp_sink(gr.sizeof_float, 'localhost', port)
         self.tb_snd.connect(src, udp_snd)
 
         udp_rcv = blocks.udp_source(gr.sizeof_float, 'localhost', port)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb_rcv.connect(udp_rcv, dst)
 
         self.tb_rcv.start()
@@ -93,8 +93,8 @@ class test_udp_sink_source(gr_unittest.TestCase):
         n_data = 16
         src_data = [float(x) for x in range(n_data)]
         expected_result = tuple(src_data)
-        src = gr.vector_source_f(src_data)
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_f(src_data)
+        dst = blocks.vector_sink_f()
 
         self.tb_snd.connect(src, udp_snd)
         self.tb_rcv.connect(udp_rcv, dst)
diff --git a/gr-blocks/python/qa_unpack_k_bits.py b/gr-blocks/python/qa_unpack_k_bits.py
index e038d5a03a..dd7024f74c 100755
--- a/gr-blocks/python/qa_unpack_k_bits.py
+++ b/gr-blocks/python/qa_unpack_k_bits.py
@@ -35,9 +35,9 @@ class test_unpack(gr_unittest.TestCase):
     def test_001(self):
         src_data =         (1,0,1,1,0,1,1,0)
         expected_results = (1,0,1,1,0,1,1,0)
-        src = gr.vector_source_b(src_data,False)
+        src = blocks.vector_source_b(src_data,False)
         op = blocks.unpack_k_bits_bb(1)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_results, dst.data())
@@ -45,9 +45,9 @@ class test_unpack(gr_unittest.TestCase):
     def test_002(self):
         src_data =         (  2,  3,  0,  1)
         expected_results = (1,0,1,1,0,0,0,1)
-        src = gr.vector_source_b(src_data,False)
+        src = blocks.vector_source_b(src_data,False)
         op = blocks.unpack_k_bits_bb(2)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         self.assertEqual(expected_results, dst.data())
diff --git a/gr-blocks/python/qa_vco.py b/gr-blocks/python/qa_vco.py
index 721eb9471b..23ff636d86 100644
--- a/gr-blocks/python/qa_vco.py
+++ b/gr-blocks/python/qa_vco.py
@@ -21,7 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
-import blocks_swig
+import blocks_swig as blocks
 import math
 
 def sig_source_f(samp_rate, freq, amp, N):
@@ -43,9 +43,9 @@ class test_vco(gr_unittest.TestCase):
             sig_source_f(1, 0.125, 1, 200) + \
             sig_source_f(1, 0.25, 1, 200)
 
-        src = gr.vector_source_f(src_data)
-        op = blocks_swig.vco_f(1, math.pi/2.0, 1)
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_f(src_data)
+        op = blocks.vco_f(1, math.pi/2.0, 1)
+        dst = blocks.vector_sink_f()
 
         self.tb.connect(src, op, dst)
         self.tb.run()
diff --git a/gr-blocks/python/qa_vector_insert.py b/gr-blocks/python/qa_vector_insert.py
index 428a0031ba..e3c0d3102f 100755
--- a/gr-blocks/python/qa_vector_insert.py
+++ b/gr-blocks/python/qa_vector_insert.py
@@ -39,8 +39,8 @@ class test_vector_insert(gr_unittest.TestCase):
         period = 9177;
         offset = 0;
 
-        src = gr.null_source(1)
-        head = gr.head(1, 10000000);
+        src = blocks.null_source(1)
+        head = blocks.head(1, 10000000);
         ins = blocks.vector_insert_b([1], period, offset);
         dst = blocks.vector_sink_b()
 
diff --git a/gr-channels/python/CMakeLists.txt b/gr-channels/python/CMakeLists.txt
index ee58d5b164..92fe0ef220 100644
--- a/gr-channels/python/CMakeLists.txt
+++ b/gr-channels/python/CMakeLists.txt
@@ -37,6 +37,8 @@ list(APPEND GR_TEST_PYTHON_DIRS
     ${CMAKE_BINARY_DIR}/gr-channels/swig
     ${CMAKE_BINARY_DIR}/gr-analog/python
     ${CMAKE_BINARY_DIR}/gr-analog/swig
+    ${CMAKE_BINARY_DIR}/gr-blocks/python
+    ${CMAKE_BINARY_DIR}/gr-blocks/swig
 )
 list(APPEND GR_TEST_TARGET_DEPS gnuradio-channels gnuradio-analog gnuradio-blocks)
 
diff --git a/gr-channels/python/qa_channel_model.py b/gr-channels/python/qa_channel_model.py
index 0a99477097..473650f1d7 100755
--- a/gr-channels/python/qa_channel_model.py
+++ b/gr-channels/python/qa_channel_model.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import channels_swig as channels
 import math
 
@@ -39,10 +40,10 @@ class test_channel_model(gr_unittest.TestCase):
         freq = 100
 
         signal = analog.sig_source_c(fs, analog.GR_SIN_WAVE, freq, 1)
-        head = gr.head(gr.sizeof_gr_complex, N)
+        head = blocks.head(gr.sizeof_gr_complex, N)
         op = channels.channel_model(0.0, 0.0, 1.0, [1,], 0)
-        snk = gr.vector_sink_c()
-        snk1 = gr.vector_sink_c()
+        snk = blocks.vector_sink_c()
+        snk1 = blocks.vector_sink_c()
 
         op.set_noise_voltage(0.0)
         op.set_frequency_offset(0.0)
diff --git a/gr-channels/python/qa_fading_model.py b/gr-channels/python/qa_fading_model.py
index e8a066ccb5..5ad378075a 100644
--- a/gr-channels/python/qa_fading_model.py
+++ b/gr-channels/python/qa_fading_model.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import analog_swig as analog
+import blocks_swig as blocks
 import channels_swig as channels
 import math
 
@@ -41,11 +42,11 @@ class test_fading_model(gr_unittest.TestCase):
         fDTs = 0.01
         K = 4
         signal = analog.sig_source_c(fs, analog.GR_SIN_WAVE, freq, 1)
-        head = gr.head(gr.sizeof_gr_complex, N)
+        head = blocks.head(gr.sizeof_gr_complex, N)
         op = channels.fading_model(8, fDTs=fDTs, LOS=True,
                                    K=K, seed=0)
-        snk = gr.vector_sink_c()
-        snk1 = gr.vector_sink_c()
+        snk = blocks.vector_sink_c()
+        snk1 = blocks.vector_sink_c()
 
         self.assertAlmostEqual(K, op.K(), 4)
         self.assertAlmostEqual(fDTs, op.fDTs(), 4)
diff --git a/gr-digital/examples/berawgn.py b/gr-digital/examples/berawgn.py
index 6f9679d555..7fd1a2337d 100755
--- a/gr-digital/examples/berawgn.py
+++ b/gr-digital/examples/berawgn.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -91,7 +91,7 @@ class BERAWGNSimu(gr.top_block):
         self.const = digital.qpsk_constellation()
         # Source is N_BITS bits, non-repeated
         data = map(int, numpy.random.randint(0, self.const.arity(), N_BITS/self.const.bits_per_symbol()))
-        src   = gr.vector_source_b(data, False)
+        src   = blocks.vector_source_b(data, False)
         mod   = digital.chunks_to_symbols_bc((self.const.points()), 1)
         add   = blocks.add_vcc()
         noise = analog.noise_source_c(analog.GR_GAUSSIAN,
@@ -99,7 +99,7 @@ class BERAWGNSimu(gr.top_block):
                                       RAND_SEED)
         demod = digital.constellation_decoder_cb(self.const.base())
         ber   = BitErrors(self.const.bits_per_symbol())
-        self.sink  = gr.vector_sink_f()
+        self.sink  = blocks.vector_sink_f()
         self.connect(src, mod, add, demod, ber, self.sink)
         self.connect(noise, (add, 1))
         self.connect(src, (ber, 1))
diff --git a/gr-digital/examples/example_costas.py b/gr-digital/examples/example_costas.py
index 726e0756d8..ec33727799 100755
--- a/gr-digital/examples/example_costas.py
+++ b/gr-digital/examples/example_costas.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -21,6 +21,7 @@
 # 
 
 from gnuradio import gr, digital, filter
+from gnuradio import blocks
 from gnuradio import eng_notation
 from gnuradio.eng_option import eng_option
 from optparse import OptionParser
@@ -47,14 +48,14 @@ class example_costas(gr.top_block):
         data = 2.0*scipy.random.randint(0, 2, N) - 1.0
         data = scipy.exp(1j*poffset) * data
 
-        self.src = gr.vector_source_c(data.tolist(), False)
+        self.src = blocks.vector_source_c(data.tolist(), False)
         self.rrc = filter.interp_fir_filter_ccf(sps, rrc_taps)
         self.chn = filter.channel_model(noise, foffset, toffset)
         self.cst = digital.costas_loop_cc(bw, 2)
 
-        self.vsnk_src = gr.vector_sink_c()
-        self.vsnk_cst = gr.vector_sink_c()
-        self.vsnk_frq = gr.vector_sink_f()
+        self.vsnk_src = blocks.vector_sink_c()
+        self.vsnk_cst = blocks.vector_sink_c()
+        self.vsnk_frq = blocks.vector_sink_f()
 
         self.connect(self.src, self.rrc, self.chn, self.cst, self.vsnk_cst)
         self.connect(self.rrc, self.vsnk_src)
diff --git a/gr-digital/examples/example_fll.py b/gr-digital/examples/example_fll.py
index ef6e1b1658..8d52ec4be6 100755
--- a/gr-digital/examples/example_fll.py
+++ b/gr-digital/examples/example_fll.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -21,6 +21,7 @@
 # 
 
 from gnuradio import gr, digital, filter
+from gnuradio import blocks
 from gnuradio import eng_notation
 from gnuradio.eng_option import eng_option
 from optparse import OptionParser
@@ -47,16 +48,16 @@ class example_fll(gr.top_block):
         data = 2.0*scipy.random.randint(0, 2, N) - 1.0
         data = scipy.exp(1j*poffset) * data
 
-        self.src = gr.vector_source_c(data.tolist(), False)
+        self.src = blocks.vector_source_c(data.tolist(), False)
         self.rrc = filter.interp_fir_filter_ccf(sps, rrc_taps)
         self.chn = filter.channel_model(noise, foffset, toffset)
         self.fll = digital.fll_band_edge_cc(sps, rolloff, ntaps, bw)
 
-        self.vsnk_src = gr.vector_sink_c()
-        self.vsnk_fll = gr.vector_sink_c()
-        self.vsnk_frq = gr.vector_sink_f()
-        self.vsnk_phs = gr.vector_sink_f()
-        self.vsnk_err = gr.vector_sink_f()
+        self.vsnk_src = blocks.vector_sink_c()
+        self.vsnk_fll = blocks.vector_sink_c()
+        self.vsnk_frq = blocks.vector_sink_f()
+        self.vsnk_phs = blocks.vector_sink_f()
+        self.vsnk_err = blocks.vector_sink_f()
 
         self.connect(self.src, self.rrc, self.chn, self.fll, self.vsnk_fll)
         self.connect(self.rrc, self.vsnk_src)
diff --git a/gr-digital/examples/example_timing.py b/gr-digital/examples/example_timing.py
index d51aebb31d..5f5b458497 100755
--- a/gr-digital/examples/example_timing.py
+++ b/gr-digital/examples/example_timing.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -21,6 +21,7 @@
 # 
 
 from gnuradio import gr, digital, filter
+from gnuradio import blocks
 from gnuradio import eng_notation
 from gnuradio.eng_option import eng_option
 from optparse import OptionParser
@@ -55,7 +56,7 @@ class example_timing(gr.top_block):
         data = 2.0*scipy.random.randint(0, 2, N) - 1.0
         data = scipy.exp(1j*poffset) * data
 
-        self.src = gr.vector_source_c(data.tolist(), False)
+        self.src = blocks.vector_source_c(data.tolist(), False)
         self.rrc = filter.interp_fir_filter_ccf(sps, rrc_taps)
         self.chn = filter.channel_model(noise, foffset, toffset)
         self.off = filter.fractional_interpolator_cc(0.20, 1.0)
@@ -66,9 +67,9 @@ class example_timing(gr.top_block):
             self.taps = self.clk.taps()
             self.dtaps = self.clk.diff_taps()
 
-            self.vsnk_err = gr.vector_sink_f()
-            self.vsnk_rat = gr.vector_sink_f()
-            self.vsnk_phs = gr.vector_sink_f()
+            self.vsnk_err = blocks.vector_sink_f()
+            self.vsnk_rat = blocks.vector_sink_f()
+            self.vsnk_phs = blocks.vector_sink_f()
 
             self.connect((self.clk,1), self.vsnk_err)
             self.connect((self.clk,2), self.vsnk_rat)
@@ -83,12 +84,12 @@ class example_timing(gr.top_block):
                                                     mu, gain_mu,
                                                     omega_rel_lim)
 
-            self.vsnk_err = gr.vector_sink_f()
+            self.vsnk_err = blocks.vector_sink_f()
 
             self.connect((self.clk,1), self.vsnk_err)
 
-        self.vsnk_src = gr.vector_sink_c()
-        self.vsnk_clk = gr.vector_sink_c()
+        self.vsnk_src = blocks.vector_sink_c()
+        self.vsnk_clk = blocks.vector_sink_c()
 
         self.connect(self.src, self.rrc, self.chn, self.off, self.clk, self.vsnk_clk)
         self.connect(self.off, self.vsnk_src)
diff --git a/gr-digital/examples/gen_whitener.py b/gr-digital/examples/gen_whitener.py
index 0b1591c3ab..0e8a97bf2b 100755
--- a/gr-digital/examples/gen_whitener.py
+++ b/gr-digital/examples/gen_whitener.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -21,6 +21,7 @@
 # 
 
 from gnuradio import gr, gru
+from gnuradio import blocks
 from gnuradio.eng_option import eng_option
 from optparse import OptionParser
 import sys
@@ -37,8 +38,8 @@ class my_graph(gr.top_block):
             raise SystemExit, 1
 
         src = gr.lfsr_32k_source_s()
-        head = gr.head(gr.sizeof_short, 2048)
-        self.dst = gr.vector_sink_s()
+        head = blocks.head(gr.sizeof_short, 2048)
+        self.dst = blocks.vector_sink_s()
         self.connect(src, head, self.dst)
 
 if __name__ == '__main__':
diff --git a/gr-digital/examples/narrowband/benchmark_rx.py b/gr-digital/examples/narrowband/benchmark_rx.py
index ce47bf87b8..622773aac5 100755
--- a/gr-digital/examples/narrowband/benchmark_rx.py
+++ b/gr-digital/examples/narrowband/benchmark_rx.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2010,2011 Free Software Foundation, Inc.
+# Copyright 2010,2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -61,7 +61,7 @@ class my_top_block(gr.top_block):
             self.source = blocks.file_source(gr.sizeof_gr_complex, options.from_file)
         else:
             sys.stderr.write("No source defined, pulling samples from null source.\n\n")
-            self.source = gr.null_source(gr.sizeof_gr_complex)
+            self.source = blocks.null_source(gr.sizeof_gr_complex)
 
         # Set up receive path
         # do this after for any adjustments to the options that may
diff --git a/gr-digital/examples/narrowband/benchmark_tx.py b/gr-digital/examples/narrowband/benchmark_tx.py
index 593abb3cae..11ad7ea26e 100755
--- a/gr-digital/examples/narrowband/benchmark_tx.py
+++ b/gr-digital/examples/narrowband/benchmark_tx.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2010,2011 Free Software Foundation, Inc.
+# Copyright 2010,2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -60,7 +60,7 @@ class my_top_block(gr.top_block):
             self.sink = blocks.file_sink(gr.sizeof_gr_complex, options.to_file)
         else:
             sys.stderr.write("No sink defined, dumping samples to null sink.\n\n")
-            self.sink = gr.null_sink(gr.sizeof_gr_complex)
+            self.sink = blocks.null_sink(gr.sizeof_gr_complex)
 
         # do this after for any adjustments to the options that may
         # occur in the sinks (specifically the UHD sink)
diff --git a/gr-digital/examples/narrowband/digital_bert_rx.py b/gr-digital/examples/narrowband/digital_bert_rx.py
index cf42742736..c04c76762f 100755
--- a/gr-digital/examples/narrowband/digital_bert_rx.py
+++ b/gr-digital/examples/narrowband/digital_bert_rx.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2008,2011 Free Software Foundation, Inc.
+# Copyright 2008,2011,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -127,7 +127,7 @@ class rx_psk_block(gr.top_block):
         elif(options.from_file is not None):
             self._source = blocks.file_source(gr.sizeof_gr_complex, options.from_file)
         else:
-            self._source = gr.null_source(gr.sizeof_gr_complex)
+            self._source = blocks.null_source(gr.sizeof_gr_complex)
 
         # Create the BERT receiver
         self._receiver = bert_receiver(options.bitrate,
diff --git a/gr-digital/examples/narrowband/digital_bert_tx.py b/gr-digital/examples/narrowband/digital_bert_tx.py
index 2a99137704..6859d2e7af 100755
--- a/gr-digital/examples/narrowband/digital_bert_tx.py
+++ b/gr-digital/examples/narrowband/digital_bert_tx.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2008,2011 Free Software Foundation, Inc.
+# Copyright 2008,2011,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -43,7 +43,7 @@ class bert_transmit(gr.hier_block2):
                                 gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Input signature
         
         # Create BERT data bit stream	
-	self._bits = gr.vector_source_b([1,], True)      # Infinite stream of ones
+	self._bits = blocks.vector_source_b([1,], True)      # Infinite stream of ones
         self._scrambler = digital.scrambler_bb(0x8A, 0x7F, 7) # CCSDS 7-bit scrambler
 
         self._mod = digital.generic_mod(constellation, differential,
@@ -80,7 +80,7 @@ class tx_psk_block(gr.top_block):
         elif(options.to_file is not None):
             self._sink = blocks.file_sink(gr.sizeof_gr_complex, options.to_file)
         else:
-            self._sink = gr.null_sink(gr.sizeof_gr_complex)
+            self._sink = blocks.null_sink(gr.sizeof_gr_complex)
             
             
         self._transmitter = bert_transmit(self._modulator._constellation,
diff --git a/gr-digital/examples/narrowband/rx_voice.py b/gr-digital/examples/narrowband/rx_voice.py
index b2b4174cc4..8a0e9844be 100755
--- a/gr-digital/examples/narrowband/rx_voice.py
+++ b/gr-digital/examples/narrowband/rx_voice.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2005,2006,2009,2011 Free Software Foundation, Inc.
+# Copyright 2005,2006,2009,2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -89,7 +89,7 @@ class my_top_block(gr.top_block):
 
         else:
             self.thr = blocks.throttle(gr.sizeof_gr_complex, 1e6)
-            self.source = gr.null_source(gr.sizeof_gr_complex)
+            self.source = blocks.null_source(gr.sizeof_gr_complex)
             self.connect(self.source, self.thr, self.rxpath)
 
 	self.connect(self.audio_tx)        
diff --git a/gr-digital/examples/narrowband/tx_voice.py b/gr-digital/examples/narrowband/tx_voice.py
index d3df9d788f..afdb4406e6 100755
--- a/gr-digital/examples/narrowband/tx_voice.py
+++ b/gr-digital/examples/narrowband/tx_voice.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2005-2007,2009,2011 Free Software Foundation, Inc.
+# Copyright 2005-2007,2009,2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -83,7 +83,7 @@ class my_top_block(gr.top_block):
             self.sink = blocks.file_sink(gr.sizeof_gr_complex, options.to_file)
             rrate = 1
         else:
-            self.sink = gr.null_sink(gr.sizeof_gr_complex)
+            self.sink = blocks.null_sink(gr.sizeof_gr_complex)
             rrate = 1
 
         self.resampler = filter.pfb.arb_resampler_ccf(rrate)
diff --git a/gr-digital/examples/ofdm/benchmark_rx.py b/gr-digital/examples/ofdm/benchmark_rx.py
index 740e0aed0e..dbcd866ad2 100755
--- a/gr-digital/examples/ofdm/benchmark_rx.py
+++ b/gr-digital/examples/ofdm/benchmark_rx.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2006,2007,2011 Free Software Foundation, Inc.
+# Copyright 2006,2007,2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -47,7 +47,7 @@ class my_top_block(gr.top_block):
         elif(options.from_file is not None):
             self.source = blocks.file_source(gr.sizeof_gr_complex, options.from_file)
         else:
-            self.source = gr.null_source(gr.sizeof_gr_complex)
+            self.source = blocks.null_source(gr.sizeof_gr_complex)
 
         # Set up receive path
         # do this after for any adjustments to the options that may
diff --git a/gr-digital/examples/ofdm/benchmark_tx.py b/gr-digital/examples/ofdm/benchmark_tx.py
index 44b127e0cc..2942178ccf 100755
--- a/gr-digital/examples/ofdm/benchmark_tx.py
+++ b/gr-digital/examples/ofdm/benchmark_tx.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2005,2006,2011 Free Software Foundation, Inc.
+# Copyright 2005,2006,2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -46,7 +46,7 @@ class my_top_block(gr.top_block):
         elif(options.to_file is not None):
             self.sink = blocks.file_sink(gr.sizeof_gr_complex, options.to_file)
         else:
-            self.sink = gr.null_sink(gr.sizeof_gr_complex)
+            self.sink = blocks.null_sink(gr.sizeof_gr_complex)
 
         # do this after for any adjustments to the options that may
         # occur in the sinks (specifically the UHD sink)
diff --git a/gr-digital/examples/ofdm/ofdm_bugsquatch.py b/gr-digital/examples/ofdm/ofdm_bugsquatch.py
index 3b900fb46b..25c062a772 100644
--- a/gr-digital/examples/ofdm/ofdm_bugsquatch.py
+++ b/gr-digital/examples/ofdm/ofdm_bugsquatch.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-from gnuradio import gr, digital
+from gnuradio import gr, digital, blocks
 from gnuradio.digital.utils import tagged_streams
 import random
 
@@ -9,12 +9,12 @@ if __name__ == '__main__':
     fft_len = 64
     cp_len = 16
     length_tag_name = "length"
-    src = gr.vector_source_c(
+    src = blocks.vector_source_c(
         [random.randint(0, 1)*2-1 for i in range(10*fft_len)], True, fft_len,
         tagged_streams.make_lengthtags((10,), (0,), length_tag_name))
     cyclic_prefixer = digital.ofdm_cyclic_prefixer(
         fft_len, fft_len+cp_len, 0, length_tag_name)
-    sink = gr.null_sink(gr.sizeof_gr_complex)
+    sink = blocks.null_sink(gr.sizeof_gr_complex)
     checker = digital.tagged_stream_check(gr.sizeof_gr_complex*fft_len, length_tag_name)
     checker2 = digital.tagged_stream_check(gr.sizeof_gr_complex*fft_len, length_tag_name)
     tb.connect(src, checker, cyclic_prefixer, sink)
diff --git a/gr-digital/examples/ofdm/rx_ofdm.grc b/gr-digital/examples/ofdm/rx_ofdm.grc
index 1541e8dedf..47e165508c 100644
--- a/gr-digital/examples/ofdm/rx_ofdm.grc
+++ b/gr-digital/examples/ofdm/rx_ofdm.grc
@@ -689,10 +689,10 @@
     </param>
   </block>
   <block>
-    <key>gr_null_sink</key>
+    <key>blocks_null_sink</key>
     <param>
       <key>id</key>
-      <value>gr_null_sink_0</value>
+      <value>blocks_null_sink_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1067,7 +1067,7 @@
   </connection>
   <connection>
     <source_block_id>digital_constellation_decoder_cb_0</source_block_id>
-    <sink_block_id>gr_null_sink_0</sink_block_id>
+    <sink_block_id>blocks_null_sink_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/gr-digital/examples/ofdm/tx_ofdm.grc b/gr-digital/examples/ofdm/tx_ofdm.grc
index 6c4f9797d1..a2deb05f9f 100644
--- a/gr-digital/examples/ofdm/tx_ofdm.grc
+++ b/gr-digital/examples/ofdm/tx_ofdm.grc
@@ -414,10 +414,10 @@
     </param>
   </block>
   <block>
-    <key>gr_vector_source_x</key>
+    <key>blocks_vector_source_x</key>
     <param>
       <key>id</key>
-      <value>gr_vector_source_x_1</value>
+      <value>blocks_vector_source_x_1</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -709,7 +709,7 @@
     </param>
   </block>
   <block>
-    <key>gr_vector_source_x</key>
+    <key>blocks_vector_source_x</key>
     <param>
       <key>id</key>
       <value>sync_word_source</value>
@@ -952,10 +952,10 @@
     </param>
   </block>
   <block>
-    <key>gr_null_sink</key>
+    <key>blocks_null_sink</key>
     <param>
       <key>id</key>
-      <value>gr_null_sink_0</value>
+      <value>blocks_null_sink_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1045,7 +1045,7 @@
     </param>
   </block>
   <connection>
-    <source_block_id>gr_vector_source_x_1</source_block_id>
+    <source_block_id>blocks_vector_source_x_1</source_block_id>
     <sink_block_id>blocks_throttle_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
@@ -1130,7 +1130,7 @@
   </connection>
   <connection>
     <source_block_id>digital_ofdm_cyclic_prefixer_0</source_block_id>
-    <sink_block_id>gr_null_sink_0</sink_block_id>
+    <sink_block_id>blocks_null_sink_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/gr-digital/examples/snr_estimators.py b/gr-digital/examples/snr_estimators.py
index e310ec2937..73ae538865 100755
--- a/gr-digital/examples/snr_estimators.py
+++ b/gr-digital/examples/snr_estimators.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -36,6 +36,7 @@ except ImportError:
     sys.exit(1)
     
 from gnuradio import gr, digital, filter
+from gnuradio import blocks
 from optparse import OptionParser
 from gnuradio.eng_option import eng_option
 
@@ -165,10 +166,10 @@ def main():
         snrdB, snr = py_est(yy)        
         snr_python.append(snrdB)
 
-        gr_src = gr.vector_source_c(bits.tolist(), False)
+        gr_src = blocks.vector_source_c(bits.tolist(), False)
         gr_snr = digital.mpsk_snr_est_cc(gr_est, ntag, 0.001)
         gr_chn = filter.channel_model(1.0/scale)
-        gr_snk = gr.null_sink(gr.sizeof_gr_complex)
+        gr_snk = blocks.null_sink(gr.sizeof_gr_complex)
         tb = gr.top_block()
         tb.connect(gr_src, gr_chn, gr_snr, gr_snk)
         tb.run()
diff --git a/gr-digital/python/ofdm.py b/gr-digital/python/ofdm.py
index bf129675ab..fdb23703f9 100644
--- a/gr-digital/python/ofdm.py
+++ b/gr-digital/python/ofdm.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2006,2007,2008 Free Software Foundation, Inc.
+# Copyright 2006-2008,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -260,7 +260,7 @@ class ofdm_demod(gr.hier_block2):
                                       "ofdm_frame_sink_c.dat"))
         else:
             self.connect(self.ofdm_demod,
-                         gr.null_sink(gr.sizeof_gr_complex*self._occupied_tones))
+                         blocks.null_sink(gr.sizeof_gr_complex*self._occupied_tones))
 
         if options.verbose:
             self._print_verbage()
diff --git a/gr-digital/python/ofdm_sync_fixed.py b/gr-digital/python/ofdm_sync_fixed.py
index bd64964651..9cbd59b943 100644
--- a/gr-digital/python/ofdm_sync_fixed.py
+++ b/gr-digital/python/ofdm_sync_fixed.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2007 Free Software Foundation, Inc.
+# Copyright 2007,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -36,13 +36,13 @@ class ofdm_sync_fixed(gr.hier_block2):
         pkt_length = nsymbols*symbol_length
         data = (pkt_length)*[0,]
         data[(symbol_length)-1] = 1
-        self.peak_trigger = gr.vector_source_b(data, True)
+        self.peak_trigger = blocks.vector_source_b(data, True)
 
         # Use a pre-defined frequency offset
         foffset = (pkt_length)*[math.pi*freq_offset,]
-        self.frequency_offset = gr.vector_source_f(foffset, True)
+        self.frequency_offset = blocks.vector_source_f(foffset, True)
 
-        self.connect(self, gr.null_sink(gr.sizeof_gr_complex))
+        self.connect(self, blocks.null_sink(gr.sizeof_gr_complex))
         self.connect(self.frequency_offset, (self,0))
         self.connect(self.peak_trigger, (self,1))
 
diff --git a/gr-digital/python/ofdm_txrx.py b/gr-digital/python/ofdm_txrx.py
index 2734e9cc1c..c403ef6cbf 100644
--- a/gr-digital/python/ofdm_txrx.py
+++ b/gr-digital/python/ofdm_txrx.py
@@ -1,5 +1,5 @@
 #
-# Copyright 2005,2006,2007 Free Software Foundation, Inc.
+# Copyright 2005-2007,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -143,7 +143,7 @@ class ofdm_tx(gr.hier_block2):
             (header_payload_mux, 1)
         )
         self.connect(payload_mod, gr.tag_debug(gr.sizeof_gr_complex, "pmod"))
-        sync_word_gen = gr.vector_source_c(
+        sync_word_gen = blocks.vector_source_c(
             total_sync_word, True, self.fft_len,
             tagged_streams.make_lengthtags((n_sync_words,), (0,), self.frame_length_tag_key)
         )
diff --git a/gr-digital/python/qa_binary_slicer_fb.py b/gr-digital/python/qa_binary_slicer_fb.py
index 22f7da73ff..40213d7e33 100755
--- a/gr-digital/python/qa_binary_slicer_fb.py
+++ b/gr-digital/python/qa_binary_slicer_fb.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 import math, random
 
 class test_binary_slicer_fb(gr_unittest.TestCase):
@@ -36,9 +37,9 @@ class test_binary_slicer_fb(gr_unittest.TestCase):
 	expected_result = ( 0, 1,  0,  0, 1, 1,  0,  0,  0, 1, 1, 1,  0, 1, 1, 1, 1)
   	src_data =        (-1, 1, -1, -1, 1, 1, -1, -1, -1, 1, 1, 1, -1, 1, 1, 1, 1)
         src_data = [s + (1 - random.random()) for s in src_data] # add some noise
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = digital.binary_slicer_fb()
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
diff --git a/gr-digital/python/qa_chunks_to_symbols.py b/gr-digital/python/qa_chunks_to_symbols.py
index 5ffe425132..cbc29b83a9 100755
--- a/gr-digital/python/qa_chunks_to_symbols.py
+++ b/gr-digital/python/qa_chunks_to_symbols.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 
 class test_chunks_to_symbols(gr_unittest.TestCase):
 
@@ -38,10 +39,10 @@ class test_chunks_to_symbols(gr_unittest.TestCase):
         expected_result = (1+0j, 0+1j, -1+0j, 0-1j,
                            0-1j, -1+0j, 0+1j, 1+0j)
 
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         op = digital.chunks_to_symbols_bc(const)
 
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
@@ -55,10 +56,10 @@ class test_chunks_to_symbols(gr_unittest.TestCase):
         expected_result = (-3, -1, 1, 3,
                             3, 1, -1, -3)
 
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         op = digital.chunks_to_symbols_bf(const)
 
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
@@ -73,10 +74,10 @@ class test_chunks_to_symbols(gr_unittest.TestCase):
         expected_result = (1+0j, 0+1j, -1+0j, 0-1j,
                            0-1j, -1+0j, 0+1j, 1+0j)
 
-        src = gr.vector_source_i(src_data)
+        src = blocks.vector_source_i(src_data)
         op = digital.chunks_to_symbols_ic(const)
 
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
@@ -90,10 +91,10 @@ class test_chunks_to_symbols(gr_unittest.TestCase):
         expected_result = (-3, -1, 1, 3,
                             3, 1, -1, -3)
 
-        src = gr.vector_source_i(src_data)
+        src = blocks.vector_source_i(src_data)
         op = digital.chunks_to_symbols_if(const)
 
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
@@ -108,10 +109,10 @@ class test_chunks_to_symbols(gr_unittest.TestCase):
         expected_result = (1+0j, 0+1j, -1+0j, 0-1j,
                            0-1j, -1+0j, 0+1j, 1+0j)
 
-        src = gr.vector_source_s(src_data)
+        src = blocks.vector_source_s(src_data)
         op = digital.chunks_to_symbols_sc(const)
 
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
@@ -125,10 +126,10 @@ class test_chunks_to_symbols(gr_unittest.TestCase):
         expected_result = (-3, -1, 1, 3,
                             3, 1, -1, -3)
 
-        src = gr.vector_source_s(src_data)
+        src = blocks.vector_source_s(src_data)
         op = digital.chunks_to_symbols_sf(const)
 
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
diff --git a/gr-digital/python/qa_clock_recovery_mm.py b/gr-digital/python/qa_clock_recovery_mm.py
index e904cf4c21..f696c9f124 100755
--- a/gr-digital/python/qa_clock_recovery_mm.py
+++ b/gr-digital/python/qa_clock_recovery_mm.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 import random, cmath
 
 class test_clock_recovery_mm(gr_unittest.TestCase):
@@ -45,8 +46,8 @@ class test_clock_recovery_mm(gr_unittest.TestCase):
                                                  omega_rel_lim)
         
         data = 100*[complex(1, 1),]
-        self.src = gr.vector_source_c(data, False)
-        self.snk = gr.vector_sink_c()
+        self.src = blocks.vector_source_c(data, False)
+        self.snk = blocks.vector_sink_c()
 
         self.tb.connect(self.src, self.test, self.snk)
         self.tb.run()
@@ -80,8 +81,8 @@ class test_clock_recovery_mm(gr_unittest.TestCase):
                                                  omega_rel_lim)
         
         data = 100*[1,]
-        self.src = gr.vector_source_f(data, False)
-        self.snk = gr.vector_sink_f()
+        self.src = blocks.vector_source_f(data, False)
+        self.snk = blocks.vector_sink_f()
 
         self.tb.connect(self.src, self.test, self.snk)
         self.tb.run()
@@ -115,8 +116,8 @@ class test_clock_recovery_mm(gr_unittest.TestCase):
                                                  omega_rel_lim)
         
         data = 1000*[complex(1, 1), complex(1, 1), complex(-1, -1), complex(-1, -1)]
-        self.src = gr.vector_source_c(data, False)
-        self.snk = gr.vector_sink_c()
+        self.src = blocks.vector_source_c(data, False)
+        self.snk = blocks.vector_sink_c()
 
         self.tb.connect(self.src, self.test, self.snk)
         self.tb.run()
@@ -150,8 +151,8 @@ class test_clock_recovery_mm(gr_unittest.TestCase):
                                                  omega_rel_lim)
         
         data = 1000*[1, 1, -1, -1]
-        self.src = gr.vector_source_f(data, False)
-        self.snk = gr.vector_sink_f()
+        self.src = blocks.vector_source_f(data, False)
+        self.snk = blocks.vector_sink_f()
 
         self.tb.connect(self.src, self.test, self.snk)
         self.tb.run()
diff --git a/gr-digital/python/qa_cma_equalizer.py b/gr-digital/python/qa_cma_equalizer.py
index f71e199189..183ba4f4e7 100755
--- a/gr-digital/python/qa_cma_equalizer.py
+++ b/gr-digital/python/qa_cma_equalizer.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2006,2007,2010,2011 Free Software Foundation, Inc.
+# Copyright 2006,2007,2010,2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 
 class test_cma_equalizer_fir(gr_unittest.TestCase):
 
@@ -32,9 +33,9 @@ class test_cma_equalizer_fir(gr_unittest.TestCase):
     	self.tb = None
     	
     def transform(self, src_data):
-	SRC = gr.vector_source_c(src_data, False)
+	SRC = blocks.vector_source_c(src_data, False)
 	EQU = digital.cma_equalizer_cc(4, 1.0, .001, 1)
-	DST = gr.vector_sink_c()
+	DST = blocks.vector_sink_c()
 	self.tb.connect(SRC, EQU, DST)
 	self.tb.run()
 	return DST.data()
diff --git a/gr-digital/python/qa_constellation.py b/gr-digital/python/qa_constellation.py
index a593c3ea3e..77fb88031c 100755
--- a/gr-digital/python/qa_constellation.py
+++ b/gr-digital/python/qa_constellation.py
@@ -180,9 +180,9 @@ class test_constellation(gr_unittest.TestCase):
             else:
                 rotations = [None]
             for rotation in rotations:
-                src = gr.vector_source_b(self.src_data)
+                src = blocks.vector_source_b(self.src_data)
                 content = mod_demod(constellation, differential, rotation)
-                dst = gr.vector_sink_b()
+                dst = blocks.vector_sink_b()
                 self.tb = gr.top_block()
                 self.tb.connect(src, content, dst)
                 self.tb.run()
diff --git a/gr-digital/python/qa_constellation_decoder_cb.py b/gr-digital/python/qa_constellation_decoder_cb.py
index 6a93b6e743..12fef4345f 100755
--- a/gr-digital/python/qa_constellation_decoder_cb.py
+++ b/gr-digital/python/qa_constellation_decoder_cb.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010-2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010-2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 import math
 
 class test_constellation_decoder(gr_unittest.TestCase):
@@ -38,9 +39,9 @@ class test_constellation_decoder(gr_unittest.TestCase):
                            0.8 + 1.0j, -0.5 + 0.1j,  0.1 - 1.2j)
 	expected_result = (        1,           1,           0,            0,
                                    1,           0,           1)
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = digital.constellation_decoder_cb(cnst.base())
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
@@ -57,9 +58,9 @@ class test_constellation_decoder(gr_unittest.TestCase):
                            0.8 + 1.0j, -0.5 + 0.1j,  0.1 - 1.2j)
 	expected_result = (        3,           1,           0,            2,
                                    3,           2,           1)
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = digital_swig.constellation_decoder_cb(cnst.base())
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
 
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
diff --git a/gr-digital/python/qa_constellation_receiver.py b/gr-digital/python/qa_constellation_receiver.py
index bc44220ea9..73a78d0f8e 100755
--- a/gr-digital/python/qa_constellation_receiver.py
+++ b/gr-digital/python/qa_constellation_receiver.py
@@ -156,7 +156,7 @@ class rec_test_tb(gr.top_block):
         else:
             self.src_data = src_data
         packer = blocks.unpacked_to_packed_bb(1, gr.GR_MSB_FIRST)
-        src = gr.vector_source_b(self.src_data)
+        src = blocks.vector_source_b(self.src_data)
         mod = generic_mod(constellation, differential=differential)
         # Channel
         if freq_offset:
@@ -171,7 +171,7 @@ class rec_test_tb(gr.top_block):
         else:
             demod = generic_demod(constellation, differential=differential,
                                   freq_bw=0, phase_bw=0)
-        self.dst = gr.vector_sink_b()
+        self.dst = blocks.vector_sink_b()
         self.connect(src, packer, mod, channel, demod, self.dst)
 
 if __name__ == '__main__':
diff --git a/gr-digital/python/qa_correlate_access_code.py b/gr-digital/python/qa_correlate_access_code.py
index 5a5f2209f7..ccddc0f113 100755
--- a/gr-digital/python/qa_correlate_access_code.py
+++ b/gr-digital/python/qa_correlate_access_code.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2006,2007,2010,2011 Free Software Foundation, Inc.
+# Copyright 2006,2007,2010,2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 import math
 
 default_access_code = '\xAC\xDD\xA4\xE2\xF2\x8C\x20\xFC'
@@ -52,9 +53,9 @@ class test_correlate_access_code(gr_unittest.TestCase):
         #           0  0  0  1  0  0  0  1
         src_data = (1, 0, 1, 1, 1, 1, 0, 1, 1) + pad + (0,) * 7
         expected_result = pad + (1, 0, 1, 1, 3, 1, 0, 1, 1, 2) + (0,) * 6
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         op = digital.correlate_access_code_bb("1011", 0)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -69,9 +70,9 @@ class test_correlate_access_code(gr_unittest.TestCase):
         #print access_code
         src_data = code + (1, 0, 1, 1) + pad
         expected_result = pad + code + (3, 0, 1, 1)
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         op = digital.correlate_access_code_bb(access_code, 0)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -85,9 +86,9 @@ class test_correlate_access_code(gr_unittest.TestCase):
         #print access_code
         src_data = code + (1, 0, 1, 1) + pad
         expected_result = code + (1, 0, 1, 1) + pad
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         op = digital.correlate_access_code_tag_bb(access_code, 0, "test")
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
diff --git a/gr-digital/python/qa_costas_loop_cc.py b/gr-digital/python/qa_costas_loop_cc.py
index 365eda736a..9be96101e3 100755
--- a/gr-digital/python/qa_costas_loop_cc.py
+++ b/gr-digital/python/qa_costas_loop_cc.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 import psk
 import random, cmath
 
@@ -40,8 +41,8 @@ class test_costas_loop_cc(gr_unittest.TestCase):
         self.test = digital.costas_loop_cc(natfreq, order)
 
         data = 100*[complex(1,0),]
-        self.src = gr.vector_source_c(data, False)
-        self.snk = gr.vector_sink_c()
+        self.src = blocks.vector_source_c(data, False)
+        self.snk = blocks.vector_sink_c()
 
         self.tb.connect(self.src, self.test, self.snk)
         self.tb.run()
@@ -57,8 +58,8 @@ class test_costas_loop_cc(gr_unittest.TestCase):
         self.test = digital.costas_loop_cc(natfreq, order)
 
         data = [complex(2*random.randint(0,1)-1, 0) for i in xrange(100)]
-        self.src = gr.vector_source_c(data, False)
-        self.snk = gr.vector_sink_c()
+        self.src = blocks.vector_source_c(data, False)
+        self.snk = blocks.vector_sink_c()
 
         self.tb.connect(self.src, self.test, self.snk)
         self.tb.run()
@@ -81,8 +82,8 @@ class test_costas_loop_cc(gr_unittest.TestCase):
         expected_result = data[N:]
         data = [rot*d for d in data]
 
-        self.src = gr.vector_source_c(data, False)
-        self.snk = gr.vector_sink_c()
+        self.src = blocks.vector_source_c(data, False)
+        self.snk = blocks.vector_sink_c()
 
         self.tb.connect(self.src, self.test, self.snk)
         self.tb.run()
@@ -107,8 +108,8 @@ class test_costas_loop_cc(gr_unittest.TestCase):
         expected_result = data[N:]
         data = [rot*d for d in data]
 
-        self.src = gr.vector_source_c(data, False)
-        self.snk = gr.vector_sink_c()
+        self.src = blocks.vector_source_c(data, False)
+        self.snk = blocks.vector_sink_c()
 
         self.tb.connect(self.src, self.test, self.snk)
         self.tb.run()
@@ -136,8 +137,8 @@ class test_costas_loop_cc(gr_unittest.TestCase):
         rot = cmath.exp(0.1j) # some small rotation
         data = [rot*d for d in data]
 
-        self.src = gr.vector_source_c(data, False)
-        self.snk = gr.vector_sink_c()
+        self.src = blocks.vector_source_c(data, False)
+        self.snk = blocks.vector_sink_c()
 
         self.tb.connect(self.src, self.test, self.snk)
         self.tb.run()
diff --git a/gr-digital/python/qa_cpm.py b/gr-digital/python/qa_cpm.py
index 070e69a982..c87f7c34d6 100755
--- a/gr-digital/python/qa_cpm.py
+++ b/gr-digital/python/qa_cpm.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2010 Free Software Foundation, Inc.
+# Copyright 2010,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -38,10 +38,10 @@ class test_cpm(gr_unittest.TestCase):
         sps = 2
         L = 1
         in_bits = (1,) * 20
-        src = gr.vector_source_b(in_bits, False)
+        src = blocks.vector_source_b(in_bits, False)
         cpm = digital.cpmmod_bc(type, 0.5, sps, L)
         arg = blocks.complex_to_arg()
-        sink = gr.vector_sink_f()
+        sink = blocks.vector_sink_f()
 
         self.tb.connect(src, cpm, arg, sink)
         self.tb.run()
@@ -69,10 +69,10 @@ class test_cpm(gr_unittest.TestCase):
         L = 5
         bt = 0.3
         in_bits = (1,) * 20
-        src = gr.vector_source_b(in_bits, False)
+        src = blocks.vector_source_b(in_bits, False)
         gmsk = digital.gmskmod_bc(sps, L, bt)
         arg = blocks.complex_to_arg()
-        sink = gr.vector_sink_f()
+        sink = blocks.vector_sink_f()
 
         self.tb.connect(src, gmsk, arg, sink)
         self.tb.run()
diff --git a/gr-digital/python/qa_crc32_bb.py b/gr-digital/python/qa_crc32_bb.py
index 4574b9dca7..6ee7ca1bcf 100755
--- a/gr-digital/python/qa_crc32_bb.py
+++ b/gr-digital/python/qa_crc32_bb.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -41,9 +41,9 @@ class qa_crc32_bb (gr_unittest.TestCase):
         tag.offset = 0
         tag.key = pmt.string_to_symbol(tag_name)
         tag.value = pmt.from_long(len(data))
-        src = gr.vector_source_b(data, False, 1, (tag,))
+        src = blocks.vector_source_b(data, False, 1, (tag,))
         crc = digital.crc32_bb(False, tag_name)
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, crc, sink)
         self.tb.run()
         # Check that the packets before crc_check are 4 bytes longer that the input.
@@ -58,10 +58,10 @@ class qa_crc32_bb (gr_unittest.TestCase):
         tag.offset = 0
         tag.key = pmt.string_to_symbol(tag_name)
         tag.value = pmt.from_long(len(data))
-        src = gr.vector_source_b(data, False, 1, (tag,))
+        src = blocks.vector_source_b(data, False, 1, (tag,))
         crc = digital.crc32_bb(False, tag_name)
         crc_check = digital.crc32_bb(True, tag_name)
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, crc, crc_check, sink)
         self.tb.run()
         # Check that the packets after crc_check are the same as input.
@@ -91,9 +91,9 @@ class qa_crc32_bb (gr_unittest.TestCase):
         testtag3.offset = len(packets)-1
         testtag3.key = pmt.string_to_symbol("tag3")
         testtag3.value = pmt.from_long(0)
-        src = gr.vector_source_b(packets, False, 1, (tag1, tag2, testtag1, testtag2, testtag3))
+        src = blocks.vector_source_b(packets, False, 1, (tag1, tag2, testtag1, testtag2, testtag3))
         crc = digital.crc32_bb(False, tag_name)
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, crc, sink)
         self.tb.run()
         self.assertEqual(len(sink.data()), 2*(pack_len+4))
@@ -117,11 +117,11 @@ class qa_crc32_bb (gr_unittest.TestCase):
         tag.offset = 0
         tag.key = pmt.string_to_symbol(tag_name)
         tag.value = pmt.from_long(len(data))
-        src = gr.vector_source_b(data, False, 1, (tag,))
+        src = blocks.vector_source_b(data, False, 1, (tag,))
         crc = digital.crc32_bb(False, tag_name)
         crc_check = digital.crc32_bb(True, tag_name)
         corruptor = blocks.add_const_bb(1)
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, crc, corruptor, crc_check, sink)
         self.tb.run()
         # crc_check will drop invalid packets
@@ -139,9 +139,9 @@ class qa_crc32_bb (gr_unittest.TestCase):
         testtag.offset = len(data)-1
         testtag.key = pmt.string_to_symbol('tag1')
         testtag.value = pmt.from_long(0)
-        src = gr.vector_source_b(data, False, 1, (tag, testtag))
+        src = blocks.vector_source_b(data, False, 1, (tag, testtag))
         crc_check = digital.crc32_bb(True, tag_name)
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, crc_check, sink)
         self.tb.run()
         self.assertEqual([len(data)-5,], [tag.offset for tag in sink.tags() if pmt.symbol_to_string(tag.key) == 'tag1'])
diff --git a/gr-digital/python/qa_diff_encoder.py b/gr-digital/python/qa_diff_encoder.py
index c28f4dbdf8..06efdf7189 100755
--- a/gr-digital/python/qa_diff_encoder.py
+++ b/gr-digital/python/qa_diff_encoder.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2006,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2006,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 import math
 import random
 
@@ -45,10 +46,10 @@ class test_diff_encoder(gr_unittest.TestCase):
         modulus = 2
         src_data = make_random_int_tuple(1000, 0, modulus-1)
         expected_result = src_data
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         enc = digital.diff_encoder_bb(modulus)
         dec = digital.diff_decoder_bb(modulus)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, enc, dec, dst)
         self.tb.run()               # run the graph and wait for it to finish
         actual_result = dst.data()  # fetch the contents of the sink
@@ -59,10 +60,10 @@ class test_diff_encoder(gr_unittest.TestCase):
         modulus = 4
         src_data = make_random_int_tuple(1000, 0, modulus-1)
         expected_result = src_data
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         enc = digital.diff_encoder_bb(modulus)
         dec = digital.diff_decoder_bb(modulus)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, enc, dec, dst)
         self.tb.run()               # run the graph and wait for it to finish
         actual_result = dst.data()  # fetch the contents of the sink
@@ -73,10 +74,10 @@ class test_diff_encoder(gr_unittest.TestCase):
         modulus = 8
         src_data = make_random_int_tuple(40000, 0, modulus-1)
         expected_result = src_data
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         enc = digital.diff_encoder_bb(modulus)
         dec = digital.diff_decoder_bb(modulus)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, enc, dec, dst)
         self.tb.run()               # run the graph and wait for it to finish
         actual_result = dst.data()  # fetch the contents of the sink
diff --git a/gr-digital/python/qa_diff_phasor_cc.py b/gr-digital/python/qa_diff_phasor_cc.py
index 833158d0a8..87ff59a2c4 100755
--- a/gr-digital/python/qa_diff_phasor_cc.py
+++ b/gr-digital/python/qa_diff_phasor_cc.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 import math
 
 class test_diff_phasor(gr_unittest.TestCase):
@@ -35,9 +36,9 @@ class test_diff_phasor(gr_unittest.TestCase):
     def test_diff_phasor_cc(self):
         src_data = (0+0j, 1+0j, -1+0j, 3+4j, -3-4j, -3+4j)
         expected_result = (0+0j, 0+0j, -1+0j, -3-4j, -25+0j, -7-24j)
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = digital.diff_phasor_cc()
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()               # run the graph and wait for it to finish
diff --git a/gr-digital/python/qa_fll_band_edge.py b/gr-digital/python/qa_fll_band_edge.py
index 0f6bad984e..050bf888d5 100755
--- a/gr-digital/python/qa_fll_band_edge.py
+++ b/gr-digital/python/qa_fll_band_edge.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -51,7 +51,7 @@ class test_fll_band_edge_cc(gr_unittest.TestCase):
         # Create a set of 1's and -1's, pulse shape and interpolate to sps
         random.seed(0)
         data = [2.0*random.randint(0, 2) - 1.0 for i in xrange(200)]
-        self.src = gr.vector_source_c(data, False)
+        self.src = blocks.vector_source_c(data, False)
         self.rrc = filter.interp_fir_filter_ccf(sps, rrc_taps)
 
         # Mix symbols with a complex sinusoid to spin them
@@ -63,10 +63,10 @@ class test_fll_band_edge_cc(gr_unittest.TestCase):
 
         # Create sinks for all outputs of the FLL
         # we will only care about the freq and error outputs
-        self.vsnk_frq = gr.vector_sink_f()
-        self.nsnk_fll = gr.null_sink(gr.sizeof_gr_complex)
-        self.nsnk_phs = gr.null_sink(gr.sizeof_float)
-        self.nsnk_err = gr.null_sink(gr.sizeof_float)
+        self.vsnk_frq = blocks.vector_sink_f()
+        self.nsnk_fll = blocks.null_sink(gr.sizeof_gr_complex)
+        self.nsnk_phs = blocks.null_sink(gr.sizeof_float)
+        self.nsnk_err = blocks.null_sink(gr.sizeof_float)
         
         # Connect the blocks
         self.tb.connect(self.nco, (self.mix,1))
diff --git a/gr-digital/python/qa_framer_sink.py b/gr-digital/python/qa_framer_sink.py
index e717e6ae05..bf6c5cc96d 100755
--- a/gr-digital/python/qa_framer_sink.py
+++ b/gr-digital/python/qa_framer_sink.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 
 default_access_code = '\xAC\xDD\xA4\xE2\xF2\x8C\x20\xFC'
 
@@ -56,10 +57,10 @@ class test_framker_sink(gr_unittest.TestCase):
 
         rcvd_pktq = gr.msg_queue()
 
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         correlator = digital.correlate_access_code_bb(access_code, 0)
         framer_sink = digital.framer_sink_1(rcvd_pktq)
-        vsnk = gr.vector_sink_b()
+        vsnk = blocks.vector_sink_b()
 
         self.tb.connect(src, correlator, framer_sink)
         self.tb.connect(correlator, vsnk)
@@ -80,10 +81,10 @@ class test_framker_sink(gr_unittest.TestCase):
 
         rcvd_pktq = gr.msg_queue()
 
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         correlator = digital.correlate_access_code_bb(access_code, 0)
         framer_sink = digital.framer_sink_1(rcvd_pktq)
-        vsnk = gr.vector_sink_b()
+        vsnk = blocks.vector_sink_b()
 
         self.tb.connect(src, correlator, framer_sink)
         self.tb.connect(correlator, vsnk)
diff --git a/gr-digital/python/qa_glfsr_source.py b/gr-digital/python/qa_glfsr_source.py
index c5adab3023..227801c07e 100755
--- a/gr-digital/python/qa_glfsr_source.py
+++ b/gr-digital/python/qa_glfsr_source.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 
 class test_glfsr_source(gr_unittest.TestCase):
 
@@ -46,7 +47,7 @@ class test_glfsr_source(gr_unittest.TestCase):
         for degree in range(1,11):                # Higher degrees take too long to correlate
             src = digital.glfsr_source_b(degree, False)
             b2f = digital.chunks_to_symbols_bf((-1.0,1.0), 1)
-            dst = gr.vector_sink_f()
+            dst = blocks.vector_sink_f()
 	    del self.tb # Discard existing top block
 	    self.tb = gr.top_block()
             self.tb.connect(src, b2f, dst)
@@ -71,7 +72,7 @@ class test_glfsr_source(gr_unittest.TestCase):
     def test_005_correlation_f(self):
         for degree in range(1,11):                # Higher degrees take too long to correlate
             src = digital.glfsr_source_f(degree, False)
-            dst = gr.vector_sink_f()
+            dst = blocks.vector_sink_f()
 	    del self.tb # Discard existing top block
 	    self.tb = gr.top_block()
             self.tb.connect(src, dst)
diff --git a/gr-digital/python/qa_header_payload_demux.py b/gr-digital/python/qa_header_payload_demux.py
index 4073f24ace..7595409ef8 100755
--- a/gr-digital/python/qa_header_payload_demux.py
+++ b/gr-digital/python/qa_header_payload_demux.py
@@ -23,6 +23,7 @@ from gnuradio import gr, gr_unittest
 try: import pmt
 except: from gruel import pmt
 import digital_swig as digital
+import blocks_swig as blocks
 import time
 
 class qa_header_payload_demux (gr_unittest.TestCase):
@@ -45,14 +46,14 @@ class qa_header_payload_demux (gr_unittest.TestCase):
         trigger_signal = [0,] * len(data_signal)
         trigger_signal[n_zeros] = 1
 
-        data_src = gr.vector_source_f(data_signal, False)
-        trigger_src = gr.vector_source_b(trigger_signal, False)
+        data_src = blocks.vector_source_f(data_signal, False)
+        trigger_src = blocks.vector_source_b(trigger_signal, False)
         hpd = digital.header_payload_demux(
             len(header), 1, 0, "frame_len", "detect", False, gr.sizeof_float
         )
         self.assertEqual(pmt.length(hpd.message_ports_in()), 1)
-        header_sink = gr.vector_sink_f()
-        payload_sink = gr.vector_sink_f()
+        header_sink = blocks.vector_sink_f()
+        payload_sink = blocks.vector_sink_f()
 
         self.tb.connect(data_src,    (hpd, 0))
         self.tb.connect(trigger_src, (hpd, 1))
diff --git a/gr-digital/python/qa_lms_equalizer.py b/gr-digital/python/qa_lms_equalizer.py
index 9ba90a89ab..749cce2075 100755
--- a/gr-digital/python/qa_lms_equalizer.py
+++ b/gr-digital/python/qa_lms_equalizer.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2006,2007,2010,2011 Free Software Foundation, Inc.
+# Copyright 2006,2007,2010,2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 
 class test_lms_dd_equalizer(gr_unittest.TestCase):
 
@@ -32,9 +33,9 @@ class test_lms_dd_equalizer(gr_unittest.TestCase):
     	self.tb = None
     	
     def transform(self, src_data, gain, const):
-	SRC = gr.vector_source_c(src_data, False)
+	SRC = blocks.vector_source_c(src_data, False)
 	EQU = digital.lms_dd_equalizer_cc(4, gain, 1, const.base())
-	DST = gr.vector_sink_c()
+	DST = blocks.vector_sink_c()
 	self.tb.connect(SRC, EQU, DST)
 	self.tb.run()
 	return DST.data()
diff --git a/gr-digital/python/qa_map.py b/gr-digital/python/qa_map.py
index 0fd7c479a1..2083d4a849 100755
--- a/gr-digital/python/qa_map.py
+++ b/gr-digital/python/qa_map.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 
 class test_map(gr_unittest.TestCase):
 
@@ -34,9 +35,9 @@ class test_map(gr_unittest.TestCase):
     def helper(self, symbols):
         src_data = [0, 1, 2, 3, 0, 1, 2, 3]
         expected_data = map(lambda x: symbols[x], src_data)
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         op = digital.map_bb(symbols)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op, dst)
         self.tb.run()
 
diff --git a/gr-digital/python/qa_mpsk_receiver.py b/gr-digital/python/qa_mpsk_receiver.py
index bde8895e76..9590df1f72 100755
--- a/gr-digital/python/qa_mpsk_receiver.py
+++ b/gr-digital/python/qa_mpsk_receiver.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -23,6 +23,7 @@
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
 import filter_swig as filter
+import blocks_swig as blocks
 import random, cmath, time
 
 class test_mpsk_receiver(gr_unittest.TestCase):
@@ -53,8 +54,8 @@ class test_mpsk_receiver(gr_unittest.TestCase):
         
         data = 10000*[complex(1,0), complex(-1,0)]
         #data = [2*random.randint(0,1)-1 for x in xrange(10000)]
-        self.src = gr.vector_source_c(data, False)
-        self.snk = gr.vector_sink_c()
+        self.src = blocks.vector_source_c(data, False)
+        self.snk = blocks.vector_sink_c()
 
         # pulse shaping interpolation filter
         nfilts = 32
@@ -109,8 +110,8 @@ class test_mpsk_receiver(gr_unittest.TestCase):
                      complex(-0.707, -0.707), 
                      complex( 0.707, -0.707)]
         data = [0.5*d for d in data]
-        self.src = gr.vector_source_c(data, False)
-        self.snk = gr.vector_sink_c()
+        self.src = blocks.vector_source_c(data, False)
+        self.snk = blocks.vector_sink_c()
 
         # pulse shaping interpolation filter
         nfilts = 32
diff --git a/gr-digital/python/qa_mpsk_snr_est.py b/gr-digital/python/qa_mpsk_snr_est.py
index c976bf21a8..f500f0eb16 100755
--- a/gr-digital/python/qa_mpsk_snr_est.py
+++ b/gr-digital/python/qa_mpsk_snr_est.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 import math, random
 
 def get_cplx():
@@ -46,8 +47,8 @@ class test_mpsk_snr_est(gr_unittest.TestCase):
         for i in xrange(1,6):
             src_data = [b+(i*n) for b,n in zip(self._bits, self._noise)]
             
-            src = gr.vector_source_c(src_data)
-            dst = gr.null_sink(gr.sizeof_gr_complex)
+            src = blocks.vector_source_c(src_data)
+            dst = blocks.null_sink(gr.sizeof_gr_complex)
 
             tb = gr.top_block()
             tb.connect(src, op)
@@ -104,7 +105,7 @@ class test_mpsk_snr_est(gr_unittest.TestCase):
         for i in xrange(1,6):
             src_data = [b+(i*n) for b,n in zip(self._bits, self._noise)]
             
-            src = gr.vector_source_c(src_data)
+            src = blocks.vector_source_c(src_data)
 
             N = 10000
             alpha = 0.001
diff --git a/gr-digital/python/qa_ofdm_carrier_allocator_cvc.py b/gr-digital/python/qa_ofdm_carrier_allocator_cvc.py
index 2105727e04..0f5803a270 100755
--- a/gr-digital/python/qa_ofdm_carrier_allocator_cvc.py
+++ b/gr-digital/python/qa_ofdm_carrier_allocator_cvc.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -23,6 +23,7 @@ from gnuradio import gr, gr_unittest
 try: import pmt
 except: from gruel import pmt
 import digital_swig as digital
+import blocks_swig as blocks
 
 class qa_digital_carrier_allocator_cvc (gr_unittest.TestCase):
 
@@ -47,13 +48,13 @@ class qa_digital_carrier_allocator_cvc (gr_unittest.TestCase):
         tag.offset = 0
         tag.key = pmt.string_to_symbol(tag_name)
         tag.value = pmt.from_long(len(tx_symbols))
-        src = gr.vector_source_c(tx_symbols, False, 1, (tag,))
+        src = blocks.vector_source_c(tx_symbols, False, 1, (tag,))
         alloc = digital.ofdm_carrier_allocator_cvc(fft_len,
                        occupied_carriers,
                        pilot_carriers,
                        pilot_symbols,
                        tag_name)
-        sink = gr.vector_sink_c(fft_len)
+        sink = blocks.vector_sink_c(fft_len)
         self.tb.connect(src, alloc, sink)
         self.tb.run ()
         self.assertEqual(sink.data(), expected_result)
@@ -73,13 +74,13 @@ class qa_digital_carrier_allocator_cvc (gr_unittest.TestCase):
         tag.offset = 0
         tag.key = pmt.string_to_symbol(tag_name)
         tag.value = pmt.from_long(len(tx_symbols))
-        src = gr.vector_source_c(tx_symbols, False, 1, (tag,))
+        src = blocks.vector_source_c(tx_symbols, False, 1, (tag,))
         alloc = digital.ofdm_carrier_allocator_cvc(fft_len,
                        occupied_carriers,
                        pilot_carriers,
                        pilot_symbols,
                        tag_name)
-        sink = gr.vector_sink_c(fft_len)
+        sink = blocks.vector_sink_c(fft_len)
         self.tb.connect(src, alloc, sink)
         self.tb.run ()
         self.assertEqual(sink.data(), expected_result)
@@ -126,13 +127,14 @@ class qa_digital_carrier_allocator_cvc (gr_unittest.TestCase):
         testtag4.offset = 2*len(tx_symbols)-1 # Last OFDM symbol of packet 2
         testtag4.key = pmt.string_to_symbol('tag4')
         testtag4.value = pmt.from_long(0)
-        src = gr.vector_source_c(tx_symbols * 2, False, 1, (tag1, tag2, testtag1, testtag2, testtag3, testtag4))
+        src = blocks.vector_source_c(tx_symbols * 2, False, 1, 
+                                     (tag1, tag2, testtag1, testtag2, testtag3, testtag4))
         alloc = digital.ofdm_carrier_allocator_cvc(fft_len,
                        occupied_carriers,
                        pilot_carriers,
                        pilot_symbols,
                        tag_name)
-        sink = gr.vector_sink_c(fft_len)
+        sink = blocks.vector_sink_c(fft_len)
         self.tb.connect(src, alloc, sink)
         self.tb.run ()
         self.assertEqual(sink.data(), expected_result * 2)
diff --git a/gr-digital/python/qa_ofdm_chanest_vcvc.py b/gr-digital/python/qa_ofdm_chanest_vcvc.py
index c7c0d83a84..c45e39988b 100755
--- a/gr-digital/python/qa_ofdm_chanest_vcvc.py
+++ b/gr-digital/python/qa_ofdm_chanest_vcvc.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -70,9 +70,9 @@ class qa_ofdm_sync_eqinit_vcvc (gr_unittest.TestCase):
         tag2.offset = 2
         tag2.key = pmt.string_to_symbol("test_tag_2")
         tag2.value = pmt.from_long(42)
-        src = gr.vector_source_c(tx_data, False, fft_len, (tag1, tag2))
+        src = blocks.vector_source_c(tx_data, False, fft_len, (tag1, tag2))
         chanest = digital.ofdm_chanest_vcvc(sync_symbol1, sync_symbol2, 1)
-        sink = gr.vector_sink_c(fft_len)
+        sink = blocks.vector_sink_c(fft_len)
         self.tb.connect(src, chanest, sink)
         self.tb.run()
         self.assertEqual(shift_tuple(sink.data(), -carr_offset), data_symbol)
@@ -104,10 +104,10 @@ class qa_ofdm_sync_eqinit_vcvc (gr_unittest.TestCase):
         data_symbol = (0, 0, 0, 1, -1, 1, -1,  1, 0, 1, -1, -1, -1, 1, 0, 0)
         tx_data = shift_tuple(sync_symbol, carr_offset) + \
                   shift_tuple(data_symbol, carr_offset)
-        src = gr.vector_source_c(tx_data, False, fft_len)
+        src = blocks.vector_source_c(tx_data, False, fft_len)
         # 17 is out of bounds!
         chanest = digital.ofdm_chanest_vcvc(sync_symbol, (), 1, 0, 17)
-        sink = gr.vector_sink_c(fft_len)
+        sink = blocks.vector_sink_c(fft_len)
         self.tb.connect(src, chanest, sink)
         self.tb.run()
         self.assertEqual(shift_tuple(sink.data(), -carr_offset), data_symbol)
@@ -126,10 +126,10 @@ class qa_ofdm_sync_eqinit_vcvc (gr_unittest.TestCase):
         data_symbol  = (0, 0, 0, 1, -1, 1, -1,  1, 0, 1, -1, -1, -1, 1, 0, 0)
         tx_data = sync_symbol1 + sync_symbol2 + data_symbol
         channel = (0, 0, 0, 2, -2, 2, 3j, 2, 0, 2, 2, 2, 2, 3, 0, 0)
-        src = gr.vector_source_c(tx_data, False, fft_len)
+        src = blocks.vector_source_c(tx_data, False, fft_len)
         chan = blocks.multiply_const_vcc(channel)
         chanest = digital.ofdm_chanest_vcvc(sync_symbol1, sync_symbol2, 1)
-        sink = gr.vector_sink_c(fft_len)
+        sink = blocks.vector_sink_c(fft_len)
         self.tb.connect(src, chan, chanest, sink)
         self.tb.run()
         tags = sink.tags()
@@ -149,10 +149,10 @@ class qa_ofdm_sync_eqinit_vcvc (gr_unittest.TestCase):
         data_symbol  = (0, 0, 0, 1, -1, 1, -1,  1, 0, 1, -1, -1, -1, 1, 0, 0)
         tx_data = sync_symbol + data_symbol
         channel = (0, 0, 0, 2, 2, 2, 2.5, 3, 2.5, 2, 2.5, 3, 2, 1, 1, 0)
-        src = gr.vector_source_c(tx_data, False, fft_len)
+        src = blocks.vector_source_c(tx_data, False, fft_len)
         chan = blocks.multiply_const_vcc(channel)
         chanest = digital.ofdm_chanest_vcvc(sync_symbol, (), 1)
-        sink = gr.vector_sink_c(fft_len)
+        sink = blocks.vector_sink_c(fft_len)
         self.tb.connect(src, chan, chanest, sink)
         self.tb.run()
         tags = sink.tags()
@@ -172,10 +172,10 @@ class qa_ofdm_sync_eqinit_vcvc (gr_unittest.TestCase):
         data_symbol = (0, 0, 0, 1, -1, 1, -1,  1, 0, 1, -1, -1, -1, 1, 0, 0)
         tx_data = sync_symbol + data_symbol
         channel = (0, 0, 0, 2, 2, 2, 2.5, 3, 2.5, 2, 2.5, 3, 2, 1, 1, 0)
-        src = gr.vector_source_c(tx_data, False, fft_len)
+        src = blocks.vector_source_c(tx_data, False, fft_len)
         chan = blocks.multiply_const_vcc(channel)
         chanest = digital.ofdm_chanest_vcvc(sync_symbol, ref_symbol, 1)
-        sink = gr.vector_sink_c(fft_len)
+        sink = blocks.vector_sink_c(fft_len)
         self.tb.connect(src, chan, chanest, sink)
         self.tb.run()
         tags = sink.tags()
@@ -199,10 +199,10 @@ class qa_ofdm_sync_eqinit_vcvc (gr_unittest.TestCase):
                   shift_tuple(sync_symbol2, carr_offset) + \
                   shift_tuple(data_symbol, carr_offset)
         channel = range(fft_len)
-        src = gr.vector_source_c(tx_data, False, fft_len)
+        src = blocks.vector_source_c(tx_data, False, fft_len)
         chan = blocks.multiply_const_vcc(channel)
         chanest = digital.ofdm_chanest_vcvc(sync_symbol1, sync_symbol2, 1)
-        sink = gr.vector_sink_c(fft_len)
+        sink = blocks.vector_sink_c(fft_len)
         self.tb.connect(src, chan, chanest, sink)
         self.tb.run()
         tags = sink.tags()
@@ -236,12 +236,12 @@ class qa_ofdm_sync_eqinit_vcvc (gr_unittest.TestCase):
                       shift_tuple(sync_sym2, carr_offset) + \
                       shift_tuple(data_sym,  carr_offset)
             channel = [rand_range(min_chan_ampl, max_chan_ampl) * numpy.exp(1j * rand_range(0, 2 * numpy.pi)) for x in range(fft_len)]
-            src = gr.vector_source_c(tx_data, False, fft_len)
+            src = blocks.vector_source_c(tx_data, False, fft_len)
             chan = blocks.multiply_const_vcc(channel)
             noise = analog.noise_source_c(analog.GR_GAUSSIAN, wgn_amplitude)
             add = blocks.add_cc(fft_len)
             chanest = digital.ofdm_chanest_vcvc(sync_sym1, sync_sym2, 1)
-            sink = gr.vector_sink_c(fft_len)
+            sink = blocks.vector_sink_c(fft_len)
             top_block.connect(src, chan, (add, 0), chanest, sink)
             top_block.connect(noise, blocks.stream_to_vector(gr.sizeof_gr_complex, fft_len), (add, 1))
             top_block.run()
diff --git a/gr-digital/python/qa_ofdm_cyclic_prefixer.py b/gr-digital/python/qa_ofdm_cyclic_prefixer.py
index 003e987e95..355742ab07 100755
--- a/gr-digital/python/qa_ofdm_cyclic_prefixer.py
+++ b/gr-digital/python/qa_ofdm_cyclic_prefixer.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2007,2010,2011 Free Software Foundation, Inc.
+# Copyright 2007,2010,2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -24,6 +24,7 @@ from gnuradio import gr, gr_unittest
 try: import pmt
 except: from gruel import pmt
 import digital_swig as digital
+import blocks_swig as blocks
 
 class test_ofdm_cyclic_prefixer (gr_unittest.TestCase):
 
@@ -39,9 +40,9 @@ class test_ofdm_cyclic_prefixer (gr_unittest.TestCase):
         cp_len = 2
         expected_result = (6, 7, 0, 1, 2, 3, 4, 5, 6, 7,
                            6, 7, 0, 1, 2, 3, 4, 5, 6, 7)
-        src = gr.vector_source_c(range(fft_len) * 2, False, fft_len)
+        src = blocks.vector_source_c(range(fft_len) * 2, False, fft_len)
         cp = digital.ofdm_cyclic_prefixer(fft_len, fft_len + cp_len)
-        sink = gr.vector_sink_c()
+        sink = blocks.vector_sink_c()
         self.tb.connect(src, cp, sink)
         self.tb.run()
         self.assertEqual(sink.data(), expected_result)
@@ -53,9 +54,9 @@ class test_ofdm_cyclic_prefixer (gr_unittest.TestCase):
         rolloff = 2
         expected_result = (7.0/2,       8, 1, 2, 3, 4, 5, 6, 7, 8, # 1.0/2
                            7.0/2+1.0/2, 8, 1, 2, 3, 4, 5, 6, 7, 8)
-        src = gr.vector_source_c(range(1, fft_len+1) * 2, False, fft_len)
+        src = blocks.vector_source_c(range(1, fft_len+1) * 2, False, fft_len)
         cp = digital.ofdm_cyclic_prefixer(fft_len, fft_len + cp_len, rolloff)
-        sink = gr.vector_sink_c()
+        sink = blocks.vector_sink_c()
         self.tb.connect(src, cp, sink)
         self.tb.run()
         self.assertEqual(sink.data(), expected_result)
@@ -75,9 +76,9 @@ class test_ofdm_cyclic_prefixer (gr_unittest.TestCase):
         tag2.offset = 1
         tag2.key = pmt.string_to_symbol("random_tag")
         tag2.value = pmt.from_long(42)
-        src = gr.vector_source_c(range(1, fft_len+1) * 2, False, fft_len, (tag, tag2))
+        src = blocks.vector_source_c(range(1, fft_len+1) * 2, False, fft_len, (tag, tag2))
         cp = digital.ofdm_cyclic_prefixer(fft_len, fft_len + cp_len, 2, tag_name)
-        sink = gr.vector_sink_c()
+        sink = blocks.vector_sink_c()
         self.tb.connect(src, cp, sink)
         self.tb.run()
         self.assertEqual(sink.data(), expected_result)
diff --git a/gr-digital/python/qa_ofdm_frame_equalizer_vcvc.py b/gr-digital/python/qa_ofdm_frame_equalizer_vcvc.py
index 9faface03f..6df9ecbecf 100755
--- a/gr-digital/python/qa_ofdm_frame_equalizer_vcvc.py
+++ b/gr-digital/python/qa_ofdm_frame_equalizer_vcvc.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -24,6 +24,7 @@ from gnuradio import gr, gr_unittest
 try: import pmt
 except: from gruel import pmt
 import digital_swig as digital
+import blocks_swig as blocks
 
 class qa_ofdm_frame_equalizer_vcvc (gr_unittest.TestCase):
 
@@ -48,9 +49,9 @@ class qa_ofdm_frame_equalizer_vcvc (gr_unittest.TestCase):
         chan_tag.offset = 0
         chan_tag.key = pmt.string_to_symbol("ofdm_sync_chan_taps")
         chan_tag.value = pmt.init_c32vector(fft_len, (1,) * fft_len)
-        src = gr.vector_source_c(tx_data, False, fft_len, (len_tag, chan_tag))
+        src = blocks.vector_source_c(tx_data, False, fft_len, (len_tag, chan_tag))
         eq = digital.ofdm_frame_equalizer_vcvc(equalizer.base(), len_tag_key)
-        sink = gr.vector_sink_c(fft_len)
+        sink = blocks.vector_sink_c(fft_len)
         self.tb.connect(src, eq, sink)
         self.tb.run ()
         # Check data
@@ -93,9 +94,9 @@ class qa_ofdm_frame_equalizer_vcvc (gr_unittest.TestCase):
         chan_tag.offset = 0
         chan_tag.key = pmt.string_to_symbol("ofdm_sync_chan_taps")
         chan_tag.value = pmt.init_c32vector(fft_len, channel[:fft_len])
-        src = gr.vector_source_c(numpy.multiply(tx_signal, channel), False, fft_len, (len_tag, chan_tag))
+        src = blocks.vector_source_c(numpy.multiply(tx_signal, channel), False, fft_len, (len_tag, chan_tag))
         eq = digital.ofdm_frame_equalizer_vcvc(equalizer.base(), len_tag_key, True)
-        sink = gr.vector_sink_c(fft_len)
+        sink = blocks.vector_sink_c(fft_len)
         self.tb.connect(src, eq, sink)
         self.tb.run ()
         rx_data = [cnst.decision_maker_v((x,)) if x != 0 else -1 for x in sink.data()]
@@ -142,9 +143,9 @@ class qa_ofdm_frame_equalizer_vcvc (gr_unittest.TestCase):
         chan_tag.offset = 0
         chan_tag.key = pmt.string_to_symbol("ofdm_sync_chan_taps")
         chan_tag.value = pmt.init_c32vector(fft_len, channel[:fft_len])
-        src = gr.vector_source_c(numpy.multiply(tx_signal, channel), False, fft_len, (len_tag, chan_tag))
+        src = blocks.vector_source_c(numpy.multiply(tx_signal, channel), False, fft_len, (len_tag, chan_tag))
         eq = digital.ofdm_frame_equalizer_vcvc(equalizer.base(), len_tag_key, True)
-        sink = gr.vector_sink_c(fft_len)
+        sink = blocks.vector_sink_c(fft_len)
         self.tb.connect(src, eq, sink)
         self.tb.run ()
         rx_data = [cnst.decision_maker_v((x,)) if x != 0 else -1 for x in sink.data()]
diff --git a/gr-digital/python/qa_ofdm_insert_preamble.py b/gr-digital/python/qa_ofdm_insert_preamble.py
index 60902edc14..ec7ace8905 100755
--- a/gr-digital/python/qa_ofdm_insert_preamble.py
+++ b/gr-digital/python/qa_ofdm_insert_preamble.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2007,2010-2012 Free Software Foundation, Inc.
+# Copyright 2007,2010-2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -35,8 +35,8 @@ class test_ofdm_insert_preamble(gr_unittest.TestCase):
 
     def helper(self, v0, v1, fft_length, preamble):
         tb = self.tb
-        src0 = gr.vector_source_c(v0)
-        src1 = gr.vector_source_b(v1)
+        src0 = blocks.vector_source_c(v0)
+        src1 = blocks.vector_source_b(v1)
         
         s2v = blocks.stream_to_vector(gr.sizeof_gr_complex, fft_length)
 
@@ -45,8 +45,8 @@ class test_ofdm_insert_preamble(gr_unittest.TestCase):
         op = digital.ofdm_insert_preamble(fft_length, preamble)
 
         v2s = blocks.vector_to_stream(gr.sizeof_gr_complex, fft_length)
-        dst0 = gr.vector_sink_c()
-        dst1 = gr.vector_sink_b()
+        dst0 = blocks.vector_sink_c()
+        dst1 = blocks.vector_sink_b()
 
         tb.connect(src0, s2v, (op, 0))
         tb.connect(src1, (op, 1))
diff --git a/gr-digital/python/qa_ofdm_serializer_vcc.py b/gr-digital/python/qa_ofdm_serializer_vcc.py
index 107d6076c5..684cfe341f 100755
--- a/gr-digital/python/qa_ofdm_serializer_vcc.py
+++ b/gr-digital/python/qa_ofdm_serializer_vcc.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -52,9 +52,9 @@ class qa_ofdm_serializer_vcc (gr_unittest.TestCase):
         tag.offset = 0
         tag.key = pmt.string_to_symbol(tag_name)
         tag.value = pmt.from_long(n_syms)
-        src = gr.vector_source_c(tx_symbols, False, fft_len, (tag,))
+        src = blocks.vector_source_c(tx_symbols, False, fft_len, (tag,))
         serializer = digital.ofdm_serializer_vcc(fft_len, occupied_carriers, tag_name, "", 0, False)
-        sink = gr.vector_sink_c()
+        sink = blocks.vector_sink_c()
         self.tb.connect(src, serializer, sink)
         self.tb.run ()
         self.assertEqual(sink.data(), expected_result)
@@ -83,9 +83,9 @@ class qa_ofdm_serializer_vcc (gr_unittest.TestCase):
         offsettag.offset = 0
         offsettag.key = pmt.string_to_symbol("ofdm_sync_carr_offset")
         offsettag.value = pmt.from_long(carr_offset)
-        src = gr.vector_source_c(tx_symbols, False, fft_len, (tag, offsettag))
+        src = blocks.vector_source_c(tx_symbols, False, fft_len, (tag, offsettag))
         serializer = digital.ofdm_serializer_vcc(fft_len, occupied_carriers, tag_name, "", 0, False)
-        sink = gr.vector_sink_c()
+        sink = blocks.vector_sink_c()
         self.tb.connect(src, serializer, sink)
         self.tb.run ()
         self.assertEqual(sink.data(), expected_result)
@@ -108,14 +108,14 @@ class qa_ofdm_serializer_vcc (gr_unittest.TestCase):
         tag.offset = 0
         tag.key = pmt.string_to_symbol(tag_name)
         tag.value = pmt.from_long(len(tx_data))
-        src = gr.vector_source_c(tx_data, False, 1, (tag,))
+        src = blocks.vector_source_c(tx_data, False, 1, (tag,))
         alloc = digital.ofdm_carrier_allocator_cvc(fft_len,
                        occupied_carriers,
                        pilot_carriers,
                        pilot_symbols,
                        tag_name)
         serializer = digital.ofdm_serializer_vcc(alloc)
-        sink = gr.vector_sink_c()
+        sink = blocks.vector_sink_c()
         self.tb.connect(src, alloc, serializer, sink)
         self.tb.run ()
         self.assertEqual(sink.data(), tx_data)
@@ -146,7 +146,7 @@ class qa_ofdm_serializer_vcc (gr_unittest.TestCase):
         offsettag.offset = 0
         offsettag.key = pmt.string_to_symbol("ofdm_sync_carr_offset")
         offsettag.value = pmt.from_long(carr_offset)
-        src = gr.vector_source_c(tx_data, False, 1, (tag, offsettag))
+        src = blocks.vector_source_c(tx_data, False, 1, (tag, offsettag))
         alloc = digital.ofdm_carrier_allocator_cvc(fft_len,
                        occupied_carriers,
                        pilot_carriers,
@@ -157,7 +157,7 @@ class qa_ofdm_serializer_vcc (gr_unittest.TestCase):
         mixer = blocks.multiply_cc()
         rx_fft  = fft.fft_vcc(fft_len, True, (), True)
         serializer = digital.ofdm_serializer_vcc(alloc)
-        sink = gr.vector_sink_c()
+        sink = blocks.vector_sink_c()
         self.tb.connect(
                 src, alloc, tx_ifft,
                 blocks.vector_to_stream(gr.sizeof_gr_complex, fft_len),
@@ -189,9 +189,9 @@ class qa_ofdm_serializer_vcc (gr_unittest.TestCase):
         tag2.offset = 0
         tag2.key = pmt.string_to_symbol("packet_len")
         tag2.value = pmt.from_long(len(expected_result))
-        src = gr.vector_source_c(tx_symbols, False, fft_len, (tag, tag2))
+        src = blocks.vector_source_c(tx_symbols, False, fft_len, (tag, tag2))
         serializer = digital.ofdm_serializer_vcc(fft_len, occupied_carriers, tag_name, "packet_len", 0, False)
-        sink = gr.vector_sink_c()
+        sink = blocks.vector_sink_c()
         self.tb.connect(src, serializer, sink)
         self.tb.run ()
         self.assertEqual(sink.data(), expected_result)
diff --git a/gr-digital/python/qa_ofdm_sync_sc_cfb.py b/gr-digital/python/qa_ofdm_sync_sc_cfb.py
index 806ef931de..d8b5465564 100755
--- a/gr-digital/python/qa_ofdm_sync_sc_cfb.py
+++ b/gr-digital/python/qa_ofdm_sync_sc_cfb.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -63,9 +63,9 @@ class qa_ofdm_sync_sc_cfb (gr_unittest.TestCase):
         tx_signal = tx_signal * 2
         add = blocks.add_cc()
         sync = digital.ofdm_sync_sc_cfb(fft_len, cp_len)
-        sink_freq   = gr.vector_sink_f()
-        sink_detect = gr.vector_sink_b()
-        self.tb.connect(gr.vector_source_c(tx_signal), (add, 0))
+        sink_freq   = blocks.vector_sink_f()
+        sink_detect = blocks.vector_sink_b()
+        self.tb.connect(blocks.vector_source_c(tx_signal), (add, 0))
         self.tb.connect(analog.noise_source_c(analog.GR_GAUSSIAN, .01), (add, 1))
         self.tb.connect(add, sync)
         self.tb.connect((sync, 0), sink_freq)
@@ -92,9 +92,9 @@ class qa_ofdm_sync_sc_cfb (gr_unittest.TestCase):
         mult = blocks.multiply_cc()
         add = blocks.add_cc()
         sync = digital.ofdm_sync_sc_cfb(fft_len, cp_len)
-        sink_freq   = gr.vector_sink_f()
-        sink_detect = gr.vector_sink_b()
-        self.tb.connect(gr.vector_source_c(tx_signal), (mult, 0), (add, 0))
+        sink_freq   = blocks.vector_sink_f()
+        sink_detect = blocks.vector_sink_b()
+        self.tb.connect(blocks.vector_source_c(tx_signal), (mult, 0), (add, 0))
         self.tb.connect(analog.sig_source_c(2 * numpy.pi, analog.GR_SIN_WAVE, freq_offset, 1.0), (mult, 1))
         self.tb.connect(analog.noise_source_c(analog.GR_GAUSSIAN, .01), (add, 1))
         self.tb.connect(add, sync)
@@ -122,9 +122,9 @@ class qa_ofdm_sync_sc_cfb (gr_unittest.TestCase):
                          [(random.randint(0, 1)*2)-1 for x in range(fft_len * random.randint(5,23))]
         add = blocks.add_cc()
         sync = digital.ofdm_sync_sc_cfb(fft_len, cp_len)
-        sink_freq   = gr.vector_sink_f()
-        sink_detect = gr.vector_sink_b()
-        self.tb.connect(gr.vector_source_c(tx_signal), (add, 0))
+        sink_freq   = blocks.vector_sink_f()
+        sink_detect = blocks.vector_sink_b()
+        self.tb.connect(blocks.vector_source_c(tx_signal), (add, 0))
         self.tb.connect(analog.noise_source_c(analog.GR_GAUSSIAN, .005), (add, 1))
         self.tb.connect(add, sync)
         self.tb.connect((sync, 0), sink_freq)
@@ -161,7 +161,7 @@ Detection error was: %d """ % (numpy.sum(sink_detect.data()) - n_bursts)
             #packets, tagname, vlen=1)
         #total_length = len(data)
 
-        #src = gr.vector_source_b(data, False, 1, tags)
+        #src = blocks.vector_source_b(data, False, 1, tags)
         #mod = ofdm_tx(
                 #fft_len=fft_len,
                 #cp_len=cp_len,
@@ -176,15 +176,15 @@ Detection error was: %d """ % (numpy.sum(sink_detect.data()) - n_bursts)
         #throttle1 = gr.throttle(gr.sizeof_gr_complex, rate_in)
         #insert_zeros = digital.ts_insert_zeros_cc(tagname)
         #throttle2 = gr.throttle(gr.sizeof_gr_complex, rate_out)
-        #sink_countbursts = gr.vector_sink_c()
-        #head = gr.head(gr.sizeof_gr_complex, int(total_length * ratio*2))
+        #sink_countbursts = blocks.vector_sink_c()
+        #head = blocks.head(gr.sizeof_gr_complex, int(total_length * ratio*2))
         #add = gr.add_cc()
         #sync = digital.ofdm_sync_sc_cfb(fft_len, cp_len)
-        #sink_freq   = gr.vector_sink_f()
-        #sink_detect = gr.vector_sink_b()
+        #sink_freq   = blocks.vector_sink_f()
+        #sink_detect = blocks.vector_sink_b()
         #noise_level = 0.01
         #noise = gr.noise_source_c(gr.GR_GAUSSIAN, noise_level)
-        #self.tb.connect(src, mod, gr.null_sink(gr.sizeof_gr_complex))
+        #self.tb.connect(src, mod, blocks.null_sink(gr.sizeof_gr_complex))
         #self.tb.connect(insert_zeros, sink_countbursts)
         #self.tb.connect(noise, (add, 1))
         #self.tb.connect(add, sync)
diff --git a/gr-digital/python/qa_ofdm_txrx.py b/gr-digital/python/qa_ofdm_txrx.py
index 778f03f515..963fca850c 100755
--- a/gr-digital/python/qa_ofdm_txrx.py
+++ b/gr-digital/python/qa_ofdm_txrx.py
@@ -22,7 +22,8 @@
 
 import numpy
 from gnuradio import gr, gr_unittest
-import digital_swig
+import digital_swig as digital
+import blocks_swig as blocks
 
 class test_ofdm_txrx (gr_unittest.TestCase):
 
@@ -38,18 +39,18 @@ class test_ofdm_txrx (gr_unittest.TestCase):
         #n_bytes = 100
         #test_data = [random.randint(0, 255) for x in range(n_bytes)]
         #tx_data, tags = tagged_streams.packets_to_vectors((test_data,), len_tag_key)
-        #src = gr.vector_source_b(test_data, False, 1, tags)
+        #src = blocks.vector_source_b(test_data, False, 1, tags)
         #tx = ofdm_tx(frame_length_tag_key=len_tag_key)
         #rx = ofdm_rx(frame_length_tag_key=len_tag_key)
         #self.assertEqual(tx.sync_word1, rx.sync_word1)
         #self.assertEqual(tx.sync_word2, rx.sync_word2)
-        #delay = gr.delay(gr.sizeof_gr_complex, 100)
-        #noise = gr.noise_source_c(gr.GR_GAUSSIAN, 0.05)
-        #add = gr.add_cc()
-        #sink = gr.vector_sink_b()
+        #delay = blocks.delay(gr.sizeof_gr_complex, 100)
+        #noise = analog.noise_source_c(analog.GR_GAUSSIAN, 0.05)
+        #add = blocks.add_cc()
+        #sink = blocks.vector_sink_b()
         ##self.tb.connect(src, tx, add, rx, sink)
         ##self.tb.connect(noise, (add, 1))
-        #self.tb.connect(src, tx, gr.null_sink(gr.sizeof_gr_complex))
+        #self.tb.connect(src, tx, blocks.null_sink(gr.sizeof_gr_complex))
         #self.tb.run()
 
 
diff --git a/gr-digital/python/qa_packet_headergenerator_bb.py b/gr-digital/python/qa_packet_headergenerator_bb.py
index 2e6e401566..43659c604d 100755
--- a/gr-digital/python/qa_packet_headergenerator_bb.py
+++ b/gr-digital/python/qa_packet_headergenerator_bb.py
@@ -21,6 +21,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 try: import pmt
 except: from gruel import pmt
 
@@ -48,9 +49,9 @@ class qa_packet_headergenerator_bb (gr_unittest.TestCase):
         tag3.offset = 6
         tag3.key = pmt.string_to_symbol(tagname)
         tag3.value = pmt.from_long(4)
-        src = gr.vector_source_b(data, False, 1, (tag1, tag2, tag3))
+        src = blocks.vector_source_b(data, False, 1, (tag1, tag2, tag3))
         header = digital.packet_headergenerator_bb(12, tagname)
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, header, sink)
         self.tb.run()
         expected_data = (
@@ -77,9 +78,9 @@ class qa_packet_headergenerator_bb (gr_unittest.TestCase):
         tag3.offset = 6
         tag3.key = pmt.string_to_symbol(tagname)
         tag3.value = pmt.from_long(4)
-        src = gr.vector_source_b(data, False, 1, (tag1, tag2, tag3))
+        src = blocks.vector_source_b(data, False, 1, (tag1, tag2, tag3))
         header = digital.packet_headergenerator_bb(32, tagname)
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, header, sink)
         self.tb.run()
         expected_data = (
@@ -107,10 +108,10 @@ class qa_packet_headergenerator_bb (gr_unittest.TestCase):
         tag3.offset = 6
         tag3.key = pmt.string_to_symbol(tagname)
         tag3.value = pmt.from_long(4)
-        src = gr.vector_source_b(data, False, 1, (tag1, tag2, tag3))
+        src = blocks.vector_source_b(data, False, 1, (tag1, tag2, tag3))
         formatter_object = digital.packet_header_default(12, tagname)
         header = digital.packet_headergenerator_bb(formatter_object.formatter())
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, header, sink)
         self.tb.run()
         expected_data = (
@@ -137,12 +138,12 @@ class qa_packet_headergenerator_bb (gr_unittest.TestCase):
         tag3.offset = 6
         tag3.key = pmt.string_to_symbol(tagname)
         tag3.value = pmt.from_long(4)
-        src = gr.vector_source_b(data, False, 1, (tag1, tag2, tag3))
+        src = blocks.vector_source_b(data, False, 1, (tag1, tag2, tag3))
         formatter_object = digital.packet_header_ofdm(occupied_carriers, 1, tagname)
         self.assertEqual(formatter_object.header_len(), 6)
         self.assertEqual(pmt.symbol_to_string(formatter_object.len_tag_key()), tagname)
         header = digital.packet_headergenerator_bb(formatter_object.formatter())
-        sink = gr.vector_sink_b()
+        sink = blocks.vector_sink_b()
         self.tb.connect(src, header, sink)
         self.tb.run()
         expected_data = (
diff --git a/gr-digital/python/qa_packet_headerparser_b.py b/gr-digital/python/qa_packet_headerparser_b.py
index aec2f96b57..da7aef69d3 100755
--- a/gr-digital/python/qa_packet_headerparser_b.py
+++ b/gr-digital/python/qa_packet_headerparser_b.py
@@ -43,7 +43,7 @@ class qa_packet_headerparser_b (gr_unittest.TestCase):
         )
         tagname = "packet_len"
 
-        src = gr.vector_source_b(expected_data)
+        src = blocks.vector_source_b(expected_data)
         parser = digital.packet_headerparser_b(32, tagname)
         sink = blocks.message_debug()
 
diff --git a/gr-digital/python/qa_pfb_clock_sync.py b/gr-digital/python/qa_pfb_clock_sync.py
index 4d0276bcd6..3db1fd5581 100755
--- a/gr-digital/python/qa_pfb_clock_sync.py
+++ b/gr-digital/python/qa_pfb_clock_sync.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -23,6 +23,7 @@
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
 import digital_swig as digital
+import blocks_swig as blocks
 import random, cmath
 
 class test_pfb_clock_sync(gr_unittest.TestCase):
@@ -54,7 +55,7 @@ class test_pfb_clock_sync(gr_unittest.TestCase):
                                                osps)
         
         data = 10000*[complex(1,0), complex(-1,0)]
-        self.src = gr.vector_source_c(data, False)
+        self.src = blocks.vector_source_c(data, False)
 
         # pulse shaping interpolation filter
         rrc_taps = filter.firdes.root_raised_cosine(
@@ -65,7 +66,7 @@ class test_pfb_clock_sync(gr_unittest.TestCase):
             ntaps)
         self.rrc_filter = filter.pfb_arb_resampler_ccf(sps, rrc_taps)
 
-        self.snk = gr.vector_sink_c()
+        self.snk = blocks.vector_sink_c()
 
         self.tb.connect(self.src, self.rrc_filter, self.test, self.snk)
         self.tb.run()
@@ -107,7 +108,7 @@ class test_pfb_clock_sync(gr_unittest.TestCase):
                                                osps)
         
         data = 10000*[1, -1]
-        self.src = gr.vector_source_f(data, False)
+        self.src = blocks.vector_source_f(data, False)
 
         # pulse shaping interpolation filter
         rrc_taps = filter.firdes.root_raised_cosine(
@@ -118,7 +119,7 @@ class test_pfb_clock_sync(gr_unittest.TestCase):
             ntaps)
         self.rrc_filter = filter.pfb_arb_resampler_fff(sps, rrc_taps)
 
-        self.snk = gr.vector_sink_f()
+        self.snk = blocks.vector_sink_f()
 
         self.tb.connect(self.src, self.rrc_filter, self.test, self.snk)
         self.tb.run()
diff --git a/gr-digital/python/qa_pn_correlator_cc.py b/gr-digital/python/qa_pn_correlator_cc.py
index 53633d04fa..14d6bcfbe1 100755
--- a/gr-digital/python/qa_pn_correlator_cc.py
+++ b/gr-digital/python/qa_pn_correlator_cc.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -39,10 +39,10 @@ class test_pn_correlator_cc(gr_unittest.TestCase):
         degree = 10
         length = 2**degree-1
         src = digital.glfsr_source_f(degree)
-        head = gr.head(gr.sizeof_float, length*length)
+        head = blocks.head(gr.sizeof_float, length*length)
         f2c = blocks.float_to_complex()
         corr = digital.pn_correlator_cc(degree)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, head, f2c, corr, dst)
         self.tb.run()
         data = dst.data()
diff --git a/gr-digital/python/qa_probe_density.py b/gr-digital/python/qa_probe_density.py
index f42f00a7f7..45d651ec1c 100755
--- a/gr-digital/python/qa_probe_density.py
+++ b/gr-digital/python/qa_probe_density.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 
 class test_probe_density(gr_unittest.TestCase):
 
@@ -34,7 +35,7 @@ class test_probe_density(gr_unittest.TestCase):
     def test_001(self):
         src_data = [0, 1, 0, 1]
         expected_data = 1
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         op = digital.probe_density_b(1)
         self.tb.connect(src, op)
         self.tb.run()
@@ -46,7 +47,7 @@ class test_probe_density(gr_unittest.TestCase):
     def test_002(self):
         src_data = [1, 1, 1, 1]
         expected_data = 1
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         op = digital.probe_density_b(0.01)
         self.tb.connect(src, op)
         self.tb.run()
@@ -57,7 +58,7 @@ class test_probe_density(gr_unittest.TestCase):
     def test_003(self):
         src_data = [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
         expected_data = 0.95243
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         op = digital.probe_density_b(0.01)
         self.tb.connect(src, op)
         self.tb.run()
diff --git a/gr-digital/python/qa_scale_tags.py b/gr-digital/python/qa_scale_tags.py
index deee775579..2008b0c3eb 100755
--- a/gr-digital/python/qa_scale_tags.py
+++ b/gr-digital/python/qa_scale_tags.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -45,10 +45,10 @@ class qa_scale_tags (gr_unittest.TestCase):
         tagname = "packet_length"
         data, tags = tagged_streams.packets_to_vectors(packets, tagname)
         tb = gr.top_block()
-        src = gr.vector_source_b(data, False, 1, tags)
+        src = blocks.vector_source_b(data, False, 1, tags)
         tag_scaler = digital.scale_tags(1, tagname, 2)
         unpacker = blocks.packed_to_unpacked_bb(4, blocks.GR_MSB_FIRST)
-        snk = gr.vector_sink_b()
+        snk = blocks.vector_sink_b()
         tb.connect(src, unpacker, tag_scaler, snk)
         tb.run()
         packets = tagged_streams.vectors_to_packets(snk.data(), snk.tags(), tagname)
diff --git a/gr-digital/python/qa_scrambler.py b/gr-digital/python/qa_scrambler.py
index 3127a7c1e6..b4980e7816 100755
--- a/gr-digital/python/qa_scrambler.py
+++ b/gr-digital/python/qa_scrambler.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2008,2010,2012 Free Software Foundation, Inc.
+# Copyright 2008,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 
 class test_scrambler(gr_unittest.TestCase):
 
@@ -33,30 +34,30 @@ class test_scrambler(gr_unittest.TestCase):
 
     def test_scrambler_descrambler(self):
         src_data = (1,)*1000
-        src = gr.vector_source_b(src_data, False)
+        src = blocks.vector_source_b(src_data, False)
         scrambler = digital.scrambler_bb(0x8a, 0x7F, 7)     # CCSDS 7-bit scrambler
         descrambler = digital.descrambler_bb(0x8a, 0x7F, 7)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, scrambler, descrambler, dst)
         self.tb.run()
         self.assertEqual(tuple(src_data[:-8]), dst.data()[8:]) # skip garbage during synchronization
 
     def test_additive_scrambler(self):
         src_data = (1,)*1000
-        src = gr.vector_source_b(src_data, False)
+        src = blocks.vector_source_b(src_data, False)
         scrambler = digital.additive_scrambler_bb(0x8a, 0x7f, 7)
         descrambler = digital.additive_scrambler_bb(0x8a, 0x7f, 7)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, scrambler, descrambler, dst)
         self.tb.run()
         self.assertEqual(src_data, dst.data())
 
     def test_additive_scrambler_reset(self):
         src_data = (1,)*1000
-        src = gr.vector_source_b(src_data, False)
+        src = blocks.vector_source_b(src_data, False)
         scrambler = digital.additive_scrambler_bb(0x8a, 0x7f, 7, 100)
         descrambler = digital.additive_scrambler_bb(0x8a, 0x7f, 7, 100)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, scrambler, descrambler, dst)
         self.tb.run()
         self.assertEqual(src_data, dst.data())
diff --git a/gr-digital/python/qa_simple_correlator.py b/gr-digital/python/qa_simple_correlator.py
index ff0faeb415..57312ff0dd 100755
--- a/gr-digital/python/qa_simple_correlator.py
+++ b/gr-digital/python/qa_simple_correlator.py
@@ -44,7 +44,7 @@ class test_simple_correlator(gr_unittest.TestCase):
         # Just using a RRC for some basic filter shape
         taps = filter.firdes.root_raised_cosine(8, 8, 1.0, 0.5, 21)
         
-        src = gr.vector_source_b(expected_result)
+        src = blocks.vector_source_b(expected_result)
         frame = digital.simple_framer(4)
         unpack = blocks.packed_to_unpacked_bb(1, gr.GR_MSB_FIRST)
         expand = filter.interp_fir_filter_fff(8, taps)
@@ -52,7 +52,7 @@ class test_simple_correlator(gr_unittest.TestCase):
         mult2 = blocks.multiply_const_ff(2)
         sub1 = blocks.add_const_ff(-1)
         op = digital.simple_correlator(4)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, frame, unpack, b2f, mult2, sub1, expand)
         self.tb.connect(expand, op, dst)
         self.tb.run()
diff --git a/gr-digital/python/qa_simple_framer.py b/gr-digital/python/qa_simple_framer.py
index f8c894da28..f598b393f2 100755
--- a/gr-digital/python/qa_simple_framer.py
+++ b/gr-digital/python/qa_simple_framer.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import digital_swig as digital
+import blocks_swig as blocks
 import math
 
 class test_simple_framer(gr_unittest.TestCase):
@@ -44,9 +45,9 @@ class test_simple_framer(gr_unittest.TestCase):
             0xac, 0xdd, 0xa4, 0xe2, 0xf2, 0x8c, 0x20, 0xfc, 0x02, 0x88, 0x99, 0xaa, 0xbb, 0x55,
             0xac, 0xdd, 0xa4, 0xe2, 0xf2, 0x8c, 0x20, 0xfc, 0x03, 0xcc, 0xdd, 0xee, 0xff, 0x55)
 
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
         op = digital.simple_framer(4)
-        dst = gr.vector_sink_b()
+        dst = blocks.vector_sink_b()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
diff --git a/gr-digital/python/qa_ts_insert_zeros.py b/gr-digital/python/qa_ts_insert_zeros.py
index d13a4c1c2b..2af6832cf5 100644
--- a/gr-digital/python/qa_ts_insert_zeros.py
+++ b/gr-digital/python/qa_ts_insert_zeros.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 # 
 # This file is part of GNU Radio
 # 
@@ -38,15 +38,15 @@ class qa_ts_insert_zeros (gr_unittest.TestCase):
         tagname = "packet_length"
         data, tags = tagged_streams.packets_to_vectors(packets, tagname)
         tb = gr.top_block()
-        src = gr.vector_source_c(data, False, 1, tags)
+        src = blocks.vector_source_c(data, False, 1, tags)
         rate_in = 16000
         rate_out = 48000
         ratio = float(rate_out) / rate_in
         throttle1 = blocks.throttle(gr.sizeof_gr_complex, rate_in)
         insert_zeros = digital.ts_insert_zeros_cc(tagname)
         throttle2 = blocks.throttle(gr.sizeof_gr_complex, rate_out)
-        head = gr.head(gr.sizeof_gr_complex, int(n_packets * packet_length * ratio*2))
-        snk = gr.vector_sink_c()
+        head = blocks.head(gr.sizeof_gr_complex, int(n_packets * packet_length * ratio*2))
+        snk = blocks.vector_sink_c()
         tb.connect(src, throttle1, insert_zeros, throttle2, head, snk)
         tb.run()
         data = snk.data()
diff --git a/gr-fec/python/qa_ecc_ccsds_27.py b/gr-fec/python/qa_ecc_ccsds_27.py
index 52615abe23..895e683345 100755
--- a/gr-fec/python/qa_ecc_ccsds_27.py
+++ b/gr-fec/python/qa_ecc_ccsds_27.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -35,13 +35,13 @@ class test_ccsds_27 (gr_unittest.TestCase):
     def xtest_ccsds_27 (self):
         src_data = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
 	expected = (0, 0, 0, 0, 1, 2, 3, 4, 5, 6)
-        src = gr.vector_source_b(src_data)
+        src = blocks.vector_source_b(src_data)
 	enc = fec.encode_ccsds_27_bb()
 	b2f = blocks.char_to_float()
 	add = blocks.add_const_ff(-0.5)
 	mul = blocks.multiply_const_ff(2.0)
 	dec = fec.decode_ccsds_27_fb()
-	dst = gr.vector_sink_b()
+	dst = blocks.vector_sink_b()
 	self.tb.connect(src, enc, b2f, add, mul, dec, dst)
 	self.tb.run()
 	dst_data = dst.data()
diff --git a/gr-fft/python/qa_fft.py b/gr-fft/python/qa_fft.py
index 0a66a2c1fc..c90eea69c5 100755
--- a/gr-fft/python/qa_fft.py
+++ b/gr-fft/python/qa_fft.py
@@ -87,11 +87,11 @@ class test_fft(gr_unittest.TestCase):
                            (689.48553466796875-918.2142333984375j),
                            (1646.539306640625-1694.1956787109375j))
 
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         s2v = blocks.stream_to_vector(gr.sizeof_gr_complex, fft_size)
         op  = fft.fft_vcc(fft_size, True, [], False)
         v2s = blocks.vector_to_stream(gr.sizeof_gr_complex, fft_size)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         tb.connect(src, s2v, op, v2s, dst)
         tb.run()
         result_data = dst.data()
@@ -141,11 +141,11 @@ class test_fft(gr_unittest.TestCase):
 
         expected_result = tuple([complex(primes[2*i], primes[2*i+1]) for i in range(fft_size)])
 
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         s2v = blocks.stream_to_vector(gr.sizeof_gr_complex, fft_size)
         op  = fft.fft_vcc(fft_size, False, [], False)
         v2s = blocks.vector_to_stream(gr.sizeof_gr_complex, fft_size)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         tb.connect(src, s2v, op, v2s, dst)
         tb.run()
         result_data = dst.data()
@@ -199,11 +199,11 @@ class test_fft(gr_unittest.TestCase):
 
         nthreads = 2
 
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         s2v = blocks.stream_to_vector(gr.sizeof_gr_complex, fft_size)
         op  = fft.fft_vcc(fft_size, False, [], False, nthreads)
         v2s = blocks.vector_to_stream(gr.sizeof_gr_complex, fft_size)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         tb.connect(src, s2v, op, v2s, dst)
         tb.run()
         result_data = dst.data()
diff --git a/gr-fft/python/qa_goertzel.py b/gr-fft/python/qa_goertzel.py
index 27f9d370e1..33f1413b6d 100755
--- a/gr-fft/python/qa_goertzel.py
+++ b/gr-fft/python/qa_goertzel.py
@@ -23,6 +23,7 @@
 from gnuradio import gr, gr_unittest
 from math import pi, cos
 import fft_swig as fft
+import blocks_swig as blocks
 
 class test_goertzel(gr_unittest.TestCase):
 
@@ -36,9 +37,9 @@ class test_goertzel(gr_unittest.TestCase):
         return [cos(2*pi*x*freq/rate) for x in range(rate)]
 
     def transform(self, src_data, rate, freq):
-	src = gr.vector_source_f(src_data, False)
+	src = blocks.vector_source_f(src_data, False)
         dft = fft.goertzel_fc(rate, rate, freq)
-	dst = gr.vector_sink_c()
+	dst = blocks.vector_sink_c()
 	self.tb.connect(src, dft, dst)
 	self.tb.run()
 	return dst.data()
diff --git a/gr-filter/examples/benchmark_filters.py b/gr-filter/examples/benchmark_filters.py
index 5fd012bcc4..011147190b 100755
--- a/gr-filter/examples/benchmark_filters.py
+++ b/gr-filter/examples/benchmark_filters.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2005,2006,2007 Free Software Foundation, Inc.
+# Copyright 2005-2007,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -24,6 +24,7 @@ import time
 import random
 from optparse import OptionParser
 from gnuradio import gr
+from gnuradio import blocks
 from gnuradio.eng_option import eng_option
 
 def make_random_complex_tuple(L):
@@ -38,10 +39,10 @@ def benchmark(name, creator, dec, ntaps, total_test_size, block_size):
 
     tb = gr.top_block()
     taps = make_random_complex_tuple(ntaps)
-    src = gr.vector_source_c(make_random_complex_tuple(block_size), True)
-    head = gr.head(gr.sizeof_gr_complex, int(total_test_size))
+    src = blocks.vector_source_c(make_random_complex_tuple(block_size), True)
+    head = blocks.head(gr.sizeof_gr_complex, int(total_test_size))
     op = creator(dec, taps)
-    dst = gr.null_sink(gr.sizeof_gr_complex)
+    dst = blocks.null_sink(gr.sizeof_gr_complex)
     tb.connect(src, head, op, dst)
     start = time.time()
     tb.run()
diff --git a/gr-filter/examples/channelize.py b/gr-filter/examples/channelize.py
index 77d3c21968..e70817e873 100755
--- a/gr-filter/examples/channelize.py
+++ b/gr-filter/examples/channelize.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2009,2012 Free Software Foundation, Inc.
+# Copyright 2009,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -76,13 +76,13 @@ class pfb_top_block(gr.top_block):
             self.signals.append(analog.sig_source_c(self._ifs, analog.GR_SIN_WAVE, f, 1))
             self.connect(self.signals[i], (self.add,i))
 
-        self.head = gr.head(gr.sizeof_gr_complex, self._N)
+        self.head = blocks.head(gr.sizeof_gr_complex, self._N)
 
         # Construct the channelizer filter
         self.pfb = filter.pfb.channelizer_ccf(self._M, self._taps, 1)
 
         # Construct a vector sink for the input signal to the channelizer
-        self.snk_i = gr.vector_sink_c()
+        self.snk_i = blocks.vector_sink_c()
 
         # Connect the blocks
         self.connect(self.add, self.head, self.pfb)
@@ -94,7 +94,7 @@ class pfb_top_block(gr.top_block):
         # Create a vector sink for each of M output channels of the filter and connect it
         self.snks = list()
         for i in xrange(self._M):
-            self.snks.append(gr.vector_sink_c())
+            self.snks.append(blocks.vector_sink_c())
             self.connect((self.pfb, i), self.snks[i])
 
 
diff --git a/gr-filter/examples/chirp_channelize.py b/gr-filter/examples/chirp_channelize.py
index d4d2f8e238..aedd5c4892 100755
--- a/gr-filter/examples/chirp_channelize.py
+++ b/gr-filter/examples/chirp_channelize.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2009,2012 Free Software Foundation, Inc.
+# Copyright 2009,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -70,20 +70,20 @@ class pfb_top_block(gr.top_block):
         else:
             amp = 100
             data = scipy.arange(0, amp, amp/float(self._N))
-            self.vco_input = gr.vector_source_f(data, False)
+            self.vco_input = blocks.vector_source_f(data, False)
 
         # Build a VCO controlled by either the sinusoid or single chirp tone
         # Then convert this to a complex signal
         self.vco = blocks.vco_f(self._fs, 225, 1)
         self.f2c = blocks.float_to_complex()
 
-        self.head = gr.head(gr.sizeof_gr_complex, self._N)
+        self.head = blocks.head(gr.sizeof_gr_complex, self._N)
 
         # Construct the channelizer filter
         self.pfb = filter.pfb.channelizer_ccf(self._M, self._taps)
 
         # Construct a vector sink for the input signal to the channelizer
-        self.snk_i = gr.vector_sink_c()
+        self.snk_i = blocks.vector_sink_c()
 
         # Connect the blocks
         self.connect(self.vco_input, self.vco, self.f2c)
@@ -93,7 +93,7 @@ class pfb_top_block(gr.top_block):
         # Create a vector sink for each of M output channels of the filter and connect it
         self.snks = list()
         for i in xrange(self._M):
-            self.snks.append(gr.vector_sink_c())
+            self.snks.append(blocks.vector_sink_c())
             self.connect((self.pfb, i), self.snks[i])
 
 
diff --git a/gr-filter/examples/decimate.py b/gr-filter/examples/decimate.py
index 56ed7edff1..675073a431 100755
--- a/gr-filter/examples/decimate.py
+++ b/gr-filter/examples/decimate.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2009,2012 Free Software Foundation, Inc.
+# Copyright 2009,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -75,7 +75,7 @@ class pfb_top_block(gr.top_block):
             self.signals.append(analog.sig_source_c(self._fs, analog.GR_SIN_WAVE, freqs[i], 1))
             self.connect(self.signals[i], (self.add,i))
 
-        self.head = gr.head(gr.sizeof_gr_complex, self._N)
+        self.head = blocks.head(gr.sizeof_gr_complex, self._N)
 
         # Construct a PFB decimator filter
         self.pfb = filter.pfb.decimator_ccf(self._decim, self._taps, 0)
@@ -83,14 +83,14 @@ class pfb_top_block(gr.top_block):
         # Construct a standard FIR decimating filter
         self.dec = filter.fir_filter_ccf(self._decim, self._taps)
 
-        self.snk_i = gr.vector_sink_c()
+        self.snk_i = blocks.vector_sink_c()
 
         # Connect the blocks
         self.connect(self.add, self.head, self.pfb)
         self.connect(self.add, self.snk_i)
 
         # Create the sink for the decimated siganl
-        self.snk = gr.vector_sink_c()
+        self.snk = blocks.vector_sink_c()
         self.connect(self.pfb, self.snk)
 
 
diff --git a/gr-filter/examples/fft_filter_ccc.py b/gr-filter/examples/fft_filter_ccc.py
index 676e7d9f16..aaa3c6e6eb 100755
--- a/gr-filter/examples/fft_filter_ccc.py
+++ b/gr-filter/examples/fft_filter_ccc.py
@@ -2,6 +2,7 @@
 
 from gnuradio import gr, filter
 from gnuradio import analog
+from gnuradio import blocks
 from gnuradio import eng_notation
 from gnuradio.eng_option import eng_option
 from optparse import OptionParser
@@ -35,12 +36,12 @@ class example_fft_filter_ccc(gr.top_block):
         print "Num. Taps: ", len(taps)
 
         self.src  = analog.noise_source_c(analog.GR_GAUSSIAN, 1)
-        self.head = gr.head(gr.sizeof_gr_complex, self._nsamps)
+        self.head = blocks.head(gr.sizeof_gr_complex, self._nsamps)
 
         self.filt0 = filter.fft_filter_ccc(self._decim, taps)
 
-        self.vsnk_src = gr.vector_sink_c()
-        self.vsnk_out = gr.vector_sink_c()
+        self.vsnk_src = blocks.vector_sink_c()
+        self.vsnk_out = blocks.vector_sink_c()
 
         self.connect(self.src, self.head, self.vsnk_src)
         self.connect(self.head, self.filt0, self.vsnk_out)
diff --git a/gr-filter/examples/fir_filter_ccc.py b/gr-filter/examples/fir_filter_ccc.py
index 6e68fc0af7..0991124b8d 100755
--- a/gr-filter/examples/fir_filter_ccc.py
+++ b/gr-filter/examples/fir_filter_ccc.py
@@ -2,6 +2,7 @@
 
 from gnuradio import gr, filter
 from gnuradio import analog
+from gnuradio import blocks
 from gnuradio import eng_notation
 from gnuradio.eng_option import eng_option
 from optparse import OptionParser
@@ -32,12 +33,12 @@ class example_fir_filter_ccc(gr.top_block):
         print "Num. Taps: ", len(taps)
 
         self.src  = analog.noise_source_c(analog.GR_GAUSSIAN, 1)
-        self.head = gr.head(gr.sizeof_gr_complex, self._nsamps)
+        self.head = blocks.head(gr.sizeof_gr_complex, self._nsamps)
 
         self.filt0 = filter.fir_filter_ccc(self._decim, taps)
 
-        self.vsnk_src = gr.vector_sink_c()
-        self.vsnk_out = gr.vector_sink_c()
+        self.vsnk_src = blocks.vector_sink_c()
+        self.vsnk_out = blocks.vector_sink_c()
 
         self.connect(self.src, self.head, self.vsnk_src)
         self.connect(self.head, self.filt0, self.vsnk_out)
diff --git a/gr-filter/examples/fir_filter_fff.py b/gr-filter/examples/fir_filter_fff.py
index a1a8ab9573..549b543498 100755
--- a/gr-filter/examples/fir_filter_fff.py
+++ b/gr-filter/examples/fir_filter_fff.py
@@ -2,6 +2,7 @@
 
 from gnuradio import gr, filter
 from gnuradio import analog
+from gnuradio import blocks
 from gnuradio import eng_notation
 from gnuradio.eng_option import eng_option
 from optparse import OptionParser
@@ -32,12 +33,12 @@ class example_fir_filter_fff(gr.top_block):
         print "Num. Taps: ", len(taps)
 
         self.src  = analog.noise_source_f(analog.GR_GAUSSIAN, 1)
-        self.head = gr.head(gr.sizeof_float, self._nsamps)
+        self.head = blocks.head(gr.sizeof_float, self._nsamps)
 
         self.filt0 = filter.fir_filter_fff(self._decim, taps)
 
-        self.vsnk_src = gr.vector_sink_f()
-        self.vsnk_out = gr.vector_sink_f()
+        self.vsnk_src = blocks.vector_sink_f()
+        self.vsnk_out = blocks.vector_sink_f()
 
         self.connect(self.src, self.head, self.vsnk_src)
         self.connect(self.head, self.filt0, self.vsnk_out)
diff --git a/gr-filter/examples/interpolate.py b/gr-filter/examples/interpolate.py
index e0d4cc14b1..40bab7b1f1 100755
--- a/gr-filter/examples/interpolate.py
+++ b/gr-filter/examples/interpolate.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2009,2012 Free Software Foundation, Inc.
+# Copyright 2009,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -89,14 +89,14 @@ class pfb_top_block(gr.top_block):
         self.signal2 = analog.sig_source_c(self._fs, analog.GR_SIN_WAVE, freq2, 0.5)
         self.signal = blocks.add_cc()
 
-        self.head = gr.head(gr.sizeof_gr_complex, self._N)
+        self.head = blocks.head(gr.sizeof_gr_complex, self._N)
 
         # Construct the PFB interpolator filter
         self.pfb = filter.pfb.interpolator_ccf(self._interp, self._taps)
 
         # Construct the PFB arbitrary resampler filter
         self.pfb_ar = filter.pfb.arb_resampler_ccf(self._ainterp, self._taps2, flt_size)
-        self.snk_i = gr.vector_sink_c()
+        self.snk_i = blocks.vector_sink_c()
 
         #self.pfb_ar.pfb.print_taps()
         #self.pfb.pfb.print_taps()
@@ -109,8 +109,8 @@ class pfb_top_block(gr.top_block):
         self.connect(self.signal, self.snk_i)
 
         # Create the sink for the interpolated signals
-        self.snk1 = gr.vector_sink_c()
-        self.snk2 = gr.vector_sink_c()
+        self.snk1 = blocks.vector_sink_c()
+        self.snk2 = blocks.vector_sink_c()
         self.connect(self.pfb, self.snk1)
         self.connect(self.pfb_ar, self.snk2)
 
diff --git a/gr-filter/examples/reconstruction.py b/gr-filter/examples/reconstruction.py
index 75c224e79c..85704bda2b 100755
--- a/gr-filter/examples/reconstruction.py
+++ b/gr-filter/examples/reconstruction.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2010,2012 Free Software Foundation, Inc.
+# Copyright 2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, digital
 from gnuradio import filter
+from gnuradio import blocks
 
 try:
     from gnuradio import channels
@@ -68,7 +69,7 @@ def main():
     data = scipy.random.randint(0, 256, N)
     rrc_taps = filter.firdes.root_raised_cosine(1, 2, 1, 0.35, 41)
 
-    src = gr.vector_source_b(data.astype(scipy.uint8).tolist(), False)
+    src = blocks.vector_source_b(data.astype(scipy.uint8).tolist(), False)
     mod = digital.bpsk_mod(samples_per_symbol=2)
     chan = filter.channel_model(npwr)
     rrc = filter.fft_filter_ccc(1, rrc_taps)
@@ -79,8 +80,8 @@ def main():
     # Put the pieces back together again
     syn_taps = [nchans*t for t in proto_taps]
     synthesizer = filter.pfb_synthesizer_ccf(nchans, syn_taps, True)
-    src_snk = gr.vector_sink_c()
-    snk = gr.vector_sink_c()
+    src_snk = blocks.vector_sink_c()
+    snk = blocks.vector_sink_c()
 
     # Remap the location of the channels
     # Can be done in synth or channelizer (watch out for rotattions in
@@ -96,7 +97,7 @@ def main():
     for i in xrange(nchans):
         tb.connect((channelizer,i), (synthesizer, i))
 
-        vsnk.append(gr.vector_sink_c())
+        vsnk.append(blocks.vector_sink_c())
         tb.connect((channelizer,i), vsnk[i])
 
     tb.connect(synthesizer, snk)
diff --git a/gr-filter/examples/resampler.py b/gr-filter/examples/resampler.py
index c2a24116fc..e329f062d0 100755
--- a/gr-filter/examples/resampler.py
+++ b/gr-filter/examples/resampler.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2009,2012 Free Software Foundation, Inc.
+# Copyright 2009,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr
 from gnuradio import filter
+from gnuradio import blocks
 import sys
 
 try:
@@ -54,7 +55,7 @@ class mytb(gr.top_block):
 
         self.src = analog.sig_source_c(fs_in, analog.GR_SIN_WAVE, fc, 1)
         #self.src = analog.noise_source_c(analog.GR_GAUSSIAN, 1)
-        self.head = gr.head(gr.sizeof_gr_complex, N)
+        self.head = blocks.head(gr.sizeof_gr_complex, N)
 
         # A resampler with our taps
         self.resamp_0 = filter.pfb.arb_resampler_ccf(rerate, taps,
@@ -67,9 +68,9 @@ class mytb(gr.top_block):
         # specify the out-of-band rejection (default=80).
         self.resamp_1 = filter.pfb.arb_resampler_ccf(rerate)
 
-        self.snk_in = gr.vector_sink_c()
-        self.snk_0 = gr.vector_sink_c()
-        self.snk_1 = gr.vector_sink_c()
+        self.snk_in = blocks.vector_sink_c()
+        self.snk_0 = blocks.vector_sink_c()
+        self.snk_1 = blocks.vector_sink_c()
 
         self.connect(self.src, self.head, self.snk_in)
         self.connect(self.head, self.resamp_0, self.snk_0)
diff --git a/gr-filter/examples/synth_filter.py b/gr-filter/examples/synth_filter.py
index 505141614a..5382127b35 100755
--- a/gr-filter/examples/synth_filter.py
+++ b/gr-filter/examples/synth_filter.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2010,2012 Free Software Foundation, Inc.
+# Copyright 2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr
 from gnuradio import filter
+from gnuradio import blocks
 import sys
 
 try:
@@ -60,8 +61,8 @@ def main():
                                                      len(taps)/nchans)
     filtbank = filter.pfb_synthesizer_ccf(nchans, taps)
 
-    head = gr.head(gr.sizeof_gr_complex, N)
-    snk = gr.vector_sink_c()
+    head = blocks.head(gr.sizeof_gr_complex, N)
+    snk = blocks.vector_sink_c()
 
     tb = gr.top_block()
     tb.connect(filtbank, head, snk)
diff --git a/gr-filter/examples/synth_to_chan.py b/gr-filter/examples/synth_to_chan.py
index 5ea4d8ee47..9e682021b7 100755
--- a/gr-filter/examples/synth_to_chan.py
+++ b/gr-filter/examples/synth_to_chan.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2010,2012 Free Software Foundation, Inc.
+# Copyright 2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -68,10 +68,10 @@ def main():
     channelizer = filter.pfb.channelizer_ccf(nchans, chtaps)
 
     noise_level = 0.01
-    head = gr.head(gr.sizeof_gr_complex, N)
+    head = blocks.head(gr.sizeof_gr_complex, N)
     noise = analog.noise_source_c(analog.GR_GAUSSIAN, noise_level)
     addnoise = blocks.add_cc()
-    snk_synth = gr.vector_sink_c()
+    snk_synth = blocks.vector_sink_c()
 
     tb = gr.top_block()
 
@@ -85,7 +85,7 @@ def main():
         tb.connect(si, fmtx[i], (filtbank, i))
 
     for i in xrange(nchans):
-        snk.append(gr.vector_sink_c())
+        snk.append(blocks.vector_sink_c())
         tb.connect((channelizer, i), snk[i])
 
     tb.run()
diff --git a/gr-filter/include/filter/freq_xlating_fir_filter_XXX.h.t b/gr-filter/include/filter/freq_xlating_fir_filter_XXX.h.t
index 88e15f823d..7aa4a55cc8 100644
--- a/gr-filter/include/filter/freq_xlating_fir_filter_XXX.h.t
+++ b/gr-filter/include/filter/freq_xlating_fir_filter_XXX.h.t
@@ -30,7 +30,6 @@
 
 #include <filter/api.h>
 #include <gr_sync_decimator.h>
-#include <gr_rotator.h>
 
 namespace gr {
   namespace filter {
diff --git a/gr-filter/lib/CMakeLists.txt b/gr-filter/lib/CMakeLists.txt
index 5fa06701d7..3164e7ad54 100644
--- a/gr-filter/lib/CMakeLists.txt
+++ b/gr-filter/lib/CMakeLists.txt
@@ -94,6 +94,7 @@ include_directories(
     ${CMAKE_CURRENT_BINARY_DIR}
     ${GR_FILTER_INCLUDE_DIRS}
     ${GR_FFT_INCLUDE_DIRS}
+    ${GR_BLOCKS_INCLUDE_DIRS}
     ${GNURADIO_CORE_INCLUDE_DIRS}
     ${VOLK_INCLUDE_DIRS}
     ${GRUEL_INCLUDE_DIRS}
@@ -163,6 +164,7 @@ endif(MSVC)
 list(APPEND filter_libs
     gnuradio-core
     gnuradio-fft
+    gnuradio-blocks
     volk
     ${Boost_LIBRARIES}
 )
diff --git a/gr-filter/lib/freq_xlating_fir_filter_XXX_impl.h.t b/gr-filter/lib/freq_xlating_fir_filter_XXX_impl.h.t
index 0cf976d582..00222cac00 100644
--- a/gr-filter/lib/freq_xlating_fir_filter_XXX_impl.h.t
+++ b/gr-filter/lib/freq_xlating_fir_filter_XXX_impl.h.t
@@ -31,6 +31,7 @@
 #include <filter/api.h>
 #include <filter/fir_filter.h>
 #include <filter/@BASE_NAME@.h>
+#include <blocks/rotator.h>
 
 namespace gr {
   namespace filter {
@@ -40,7 +41,7 @@ namespace gr {
     protected:
       std::vector<@TAP_TYPE@>	d_proto_taps;
       kernel::@CFIR_TYPE@      *d_composite_fir;
-      gr_rotator		d_r;
+      blocks::rotator		d_r;
       double			d_center_freq;
       double			d_sampling_freq;
       bool			d_updated;
diff --git a/gr-filter/python/qa_adaptive_fir_filter.py b/gr-filter/python/qa_adaptive_fir_filter.py
index cadce52044..e8233f76ae 100755
--- a/gr-filter/python/qa_adaptive_fir_filter.py
+++ b/gr-filter/python/qa_adaptive_fir_filter.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2008,2010,2012 Free Software Foundation, Inc.
+# Copyright 2008,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,6 +21,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 
 class test_adaptive_filter(gr_unittest.TestCase):
 
@@ -61,9 +62,9 @@ class test_adaptive_filter(gr_unittest.TestCase):
                          (50+50j), (50+50j), (50+50j), (50+50j), (50+50j), (50+50j),
                          (50+50j), (50+50j), (50+50j), (50+50j), (50+50j), (50+50j))
 
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op  = filter.adaptive_fir_ccf("test", 1, 20*[0.5, 0.5])
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -80,9 +81,9 @@ class test_adaptive_filter(gr_unittest.TestCase):
                          (50+50j), (50+50j), (50+50j), (50+50j), (50+50j),
                          (50+50j), (50+50j), (50+50j), (50+50j))
 
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op  = filter.adaptive_fir_ccf("test", 4, 20*[0.5, 0.5])
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -124,9 +125,9 @@ class test_adaptive_filter(gr_unittest.TestCase):
                          (-50+150j), (-50+150j), (-50+150j), (-50+150j), (-50+150j),
                          (-50+150j), (-50+150j), (-50+150j), (-50+150j), (-50+150j),
                          (-50+150j), (-50+150j), (-50+150j), (-50+150j), (-50+150j))
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op  = filter.adaptive_fir_ccc("test", 1, 20*[0.5+1j, 0.5+1j])
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -146,9 +147,9 @@ class test_adaptive_filter(gr_unittest.TestCase):
                          (-50+150j), (-50+150j), (-50+150j), (-50+150j),
                          (-50+150j), (-50+150j), (-50+150j), (-50+150j),
                          (-50+150j), (-50+150j), (-50+150j))
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op  = filter.adaptive_fir_ccc("test", 4, 20*[0.5+1j, 0.5+1j])
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
diff --git a/gr-filter/python/qa_dc_blocker.py b/gr-filter/python/qa_dc_blocker.py
index b9df06b453..29a05fb550 100755
--- a/gr-filter/python/qa_dc_blocker.py
+++ b/gr-filter/python/qa_dc_blocker.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011,2012 Free Software Foundation, Inc.
+# Copyright 2011-2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 
 class test_dc_blocker(gr_unittest.TestCase):
 
@@ -38,9 +39,9 @@ class test_dc_blocker(gr_unittest.TestCase):
                            (0.979156494140625+0j), (-0.02081298828125+0j),
                            (-0.02072429656982422+0j))
 
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = filter.dc_blocker_cc(32, True)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
 
         self.tb.connect (src, op, dst)
         self.tb.run()
@@ -56,9 +57,9 @@ class test_dc_blocker(gr_unittest.TestCase):
                            (0.96875+0j), (-0.0302734375+0j),
                            (-0.029296875+0j))
 
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = filter.dc_blocker_cc(32, False)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
 
         self.tb.connect (src, op, dst)
         self.tb.run()
@@ -75,9 +76,9 @@ class test_dc_blocker(gr_unittest.TestCase):
                            (0.979156494140625), (-0.02081298828125),
                            (-0.02072429656982422))
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.dc_blocker_ff(32, True)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         self.tb.connect (src, op, dst)
         self.tb.run()
@@ -93,9 +94,9 @@ class test_dc_blocker(gr_unittest.TestCase):
                            (0.96875), (-0.0302734375),
                            (-0.029296875))
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.dc_blocker_ff(32, False)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
 
         self.tb.connect (src, op, dst)
         self.tb.run()
diff --git a/gr-filter/python/qa_fft_filter.py b/gr-filter/python/qa_fft_filter.py
index cb5416373f..9e0008d7c6 100755
--- a/gr-filter/python/qa_fft_filter.py
+++ b/gr-filter/python/qa_fft_filter.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2005,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2005,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 import sys
 import random
 
@@ -44,10 +45,10 @@ def reference_filter_ccc(dec, taps, input):
     compute result using conventional fir filter
     """
     tb = gr.top_block()
-    #src = gr.vector_source_c(((0,) * (len(taps) - 1)) + input)
-    src = gr.vector_source_c(input)
+    #src = blocks.vector_source_c(((0,) * (len(taps) - 1)) + input)
+    src = blocks.vector_source_c(input)
     op = filter.fir_filter_ccc(dec, taps)
-    dst = gr.vector_sink_c()
+    dst = blocks.vector_sink_c()
     tb.connect(src, op, dst)
     tb.run()
     return dst.data()
@@ -57,10 +58,10 @@ def reference_filter_fff(dec, taps, input):
     compute result using conventional fir filter
     """
     tb = gr.top_block()
-    #src = gr.vector_source_f(((0,) * (len(taps) - 1)) + input)
-    src = gr.vector_source_f(input)
+    #src = blocks.vector_source_f(((0,) * (len(taps) - 1)) + input)
+    src = blocks.vector_source_f(input)
     op = filter.fir_filter_fff(dec, taps)
-    dst = gr.vector_sink_f()
+    dst = blocks.vector_sink_f()
     tb.connect(src, op, dst)
     tb.run()
     return dst.data()
@@ -96,9 +97,9 @@ class test_fft_filter(gr_unittest.TestCase):
         src_data = (0,1,2,3,4,5,6,7)
         taps = (1,)
         expected_result = tuple([complex(x) for x in (0,1,2,3,4,5,6,7)])
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op =  filter.fft_filter_ccc(1, taps)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         tb.connect(src, op, dst)
         tb.run()
         result_data = dst.data()
@@ -114,9 +115,9 @@ class test_fft_filter(gr_unittest.TestCase):
         taps = (2,)
         nthreads = 2
         expected_result = tuple([2 * complex(x) for x in (0,1,2,3,4,5,6,7)])
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = filter.fft_filter_ccc(1, taps, nthreads)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         tb.connect(src, op, dst)
         tb.run()
         result_data = dst.data()
@@ -129,9 +130,9 @@ class test_fft_filter(gr_unittest.TestCase):
         src_data = (0,1,2,3,4,5,6,7)
         taps = (2,)
         expected_result = tuple([2 * complex(x) for x in (0,1,2,3,4,5,6,7)])
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = filter.fft_filter_ccc(1, taps)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         tb.connect(src, op, dst)
         tb.run()
         result_data = dst.data()
@@ -150,9 +151,9 @@ class test_fft_filter(gr_unittest.TestCase):
             taps = make_random_complex_tuple(ntaps)
             expected_result = reference_filter_ccc(1, taps, src_data)
 
-            src = gr.vector_source_c(src_data)
+            src = blocks.vector_source_c(src_data)
             op = filter.fft_filter_ccc(1, taps)
-            dst = gr.vector_sink_c()
+            dst = blocks.vector_sink_c()
 	    tb = gr.top_block()
             tb.connect(src, op, dst)
             tb.run()
@@ -171,9 +172,9 @@ class test_fft_filter(gr_unittest.TestCase):
             taps = make_random_complex_tuple(ntaps)
             expected_result = reference_filter_ccc(dec, taps, src_data)
 
-            src = gr.vector_source_c(src_data)
+            src = blocks.vector_source_c(src_data)
             op = filter.fft_filter_ccc(dec, taps)
-            dst = gr.vector_sink_c()
+            dst = blocks.vector_sink_c()
             tb = gr.top_block()
 	    tb.connect(src, op, dst)
             tb.run()
@@ -195,9 +196,9 @@ class test_fft_filter(gr_unittest.TestCase):
             taps = make_random_complex_tuple(ntaps)
             expected_result = reference_filter_ccc(dec, taps, src_data)
 
-            src = gr.vector_source_c(src_data)
+            src = blocks.vector_source_c(src_data)
             op = filter.fft_filter_ccc(dec, taps, nthreads)
-            dst = gr.vector_sink_c()
+            dst = blocks.vector_sink_c()
             tb = gr.top_block()
 	    tb.connect(src, op, dst)
             tb.run()
@@ -215,9 +216,9 @@ class test_fft_filter(gr_unittest.TestCase):
         src_data = (0,1,2,3,4,5,6,7)
         taps = (1,)
         expected_result = tuple([float(x) for x in (0,1,2,3,4,5,6,7)])
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.fft_filter_fff(1, taps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         tb.connect(src, op, dst)
         tb.run()
         result_data = dst.data()
@@ -231,9 +232,9 @@ class test_fft_filter(gr_unittest.TestCase):
         src_data = (0,1,2,3,4,5,6,7)
         taps = (2,)
         expected_result = tuple([2 * float(x) for x in (0,1,2,3,4,5,6,7)])
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.fft_filter_fff(1, taps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         tb.connect(src, op, dst)
         tb.run()
         result_data = dst.data()
@@ -248,9 +249,9 @@ class test_fft_filter(gr_unittest.TestCase):
         taps = (2,)
         nthreads = 2
         expected_result = tuple([2 * float(x) for x in (0,1,2,3,4,5,6,7)])
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.fft_filter_fff(1, taps, nthreads)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         tb.connect(src, op, dst)
         tb.run()
         result_data = dst.data()
@@ -266,9 +267,9 @@ class test_fft_filter(gr_unittest.TestCase):
             taps = make_random_float_tuple(ntaps)
             expected_result = reference_filter_fff(1, taps, src_data)
 
-            src = gr.vector_source_f(src_data)
+            src = blocks.vector_source_f(src_data)
             op = filter.fft_filter_fff(1, taps)
-            dst = gr.vector_sink_f()
+            dst = blocks.vector_sink_f()
     	    tb = gr.top_block()
             tb.connect(src, op, dst)
             tb.run()
@@ -296,9 +297,9 @@ class test_fft_filter(gr_unittest.TestCase):
             taps = make_random_float_tuple(ntaps)
             expected_result = reference_filter_fff(1, taps, src_data)
 
-            src = gr.vector_source_f(src_data)
+            src = blocks.vector_source_f(src_data)
             op = filter.fft_filter_fff(1, taps)
-            dst = gr.vector_sink_f()
+            dst = blocks.vector_sink_f()
     	    tb = gr.top_block()
             tb.connect(src, op, dst)
             tb.run()
@@ -317,9 +318,9 @@ class test_fft_filter(gr_unittest.TestCase):
             taps = make_random_float_tuple(ntaps)
             expected_result = reference_filter_fff(dec, taps, src_data)
 
-            src = gr.vector_source_f(src_data)
+            src = blocks.vector_source_f(src_data)
             op = filter.fft_filter_fff(dec, taps)
-            dst = gr.vector_sink_f()
+            dst = blocks.vector_sink_f()
     	    tb = gr.top_block()
             tb.connect(src, op, dst)
             tb.run()
@@ -340,9 +341,9 @@ class test_fft_filter(gr_unittest.TestCase):
             taps = make_random_float_tuple(ntaps)
             expected_result = reference_filter_fff(dec, taps, src_data)
 
-            src = gr.vector_source_f(src_data)
+            src = blocks.vector_source_f(src_data)
             op = filter.fft_filter_fff(dec, taps, nthreads)
-            dst = gr.vector_sink_f()
+            dst = blocks.vector_sink_f()
     	    tb = gr.top_block()
             tb.connect(src, op, dst)
             tb.run()
diff --git a/gr-filter/python/qa_filter_delay_fc.py b/gr-filter/python/qa_filter_delay_fc.py
index 420d6fb05f..9ec1d9d582 100755
--- a/gr-filter/python/qa_filter_delay_fc.py
+++ b/gr-filter/python/qa_filter_delay_fc.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 import math
 
 def sin_source_f(samp_rate, freq, amp, N):
@@ -114,8 +115,8 @@ class test_filter_delay_fc(gr_unittest.TestCase):
         ntaps = 51
         N = int(ntaps + sampling_freq * 0.10)
         data = sin_source_f(sampling_freq, sampling_freq * 0.10, 1.0, N)
-        src1 = gr.vector_source_f(data)
-        dst2 = gr.vector_sink_c()
+        src1 = blocks.vector_source_f(data)
+        dst2 = blocks.vector_sink_c()
 
         # calculate taps
         taps = filter.firdes_hilbert(ntaps)
@@ -205,8 +206,8 @@ class test_filter_delay_fc(gr_unittest.TestCase):
         ntaps = 51
         N = int(ntaps + sampling_freq * 0.10)
         data = sin_source_f(sampling_freq, sampling_freq * 0.10, 1.0, N)
-        src1 = gr.vector_source_f(data)
-        dst2 = gr.vector_sink_c()
+        src1 = blocks.vector_source_f(data)
+        dst2 = blocks.vector_sink_c()
 
         # calculate taps
         taps = filter.firdes_hilbert(ntaps)
@@ -298,13 +299,13 @@ class test_filter_delay_fc(gr_unittest.TestCase):
 
         data1 = sin_source_f(sampling_freq, sampling_freq * 0.10, 1.0, N)
         data2 = cos_source_f(sampling_freq, sampling_freq * 0.10, 1.0, N)
-        src1 = gr.vector_source_f(data1)
-        src2 = gr.vector_source_f(data2)
+        src1 = blocks.vector_source_f(data1)
+        src2 = blocks.vector_source_f(data2)
 
         taps = filter.firdes_hilbert(ntaps)
         hd = filter.filter_delay_fc(taps)
 
-        dst2 = gr.vector_sink_c()
+        dst2 = blocks.vector_sink_c()
 
         tb.connect(src1, (hd,0))
         tb.connect(src2, (hd,1))
diff --git a/gr-filter/python/qa_fir_filter.py b/gr-filter/python/qa_fir_filter.py
index 2a61498a26..0b44f1cac4 100755
--- a/gr-filter/python/qa_fir_filter.py
+++ b/gr-filter/python/qa_fir_filter.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2008,2010,2012 Free Software Foundation, Inc.
+# Copyright 2008,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,6 +21,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 
 class test_filter(gr_unittest.TestCase):
 
@@ -55,9 +56,9 @@ class test_filter(gr_unittest.TestCase):
                          50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0,
                          50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0,
                          50.0, 50.0, 50.0, 50.0, 50.0)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op  = filter.fir_filter_fff(1, 20*[0.5, 0.5])
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -70,9 +71,9 @@ class test_filter(gr_unittest.TestCase):
                          50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0,
                          50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0,
                          50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op  = filter.fir_filter_fff(4, 20*[0.5, 0.5])
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -109,9 +110,9 @@ class test_filter(gr_unittest.TestCase):
                          (50+50j), (50+50j), (50+50j), (50+50j), (50+50j), (50+50j),
                          (50+50j), (50+50j), (50+50j), (50+50j), (50+50j), (50+50j))
 
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op  = filter.fir_filter_ccf(1, 20*[0.5, 0.5])
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -128,9 +129,9 @@ class test_filter(gr_unittest.TestCase):
                          (50+50j), (50+50j), (50+50j), (50+50j), (50+50j),
                          (50+50j), (50+50j), (50+50j), (50+50j))
 
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op  = filter.fir_filter_ccf(4, 20*[0.5, 0.5])
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -172,9 +173,9 @@ class test_filter(gr_unittest.TestCase):
                          (-50+150j), (-50+150j), (-50+150j), (-50+150j), (-50+150j),
                          (-50+150j), (-50+150j), (-50+150j), (-50+150j), (-50+150j),
                          (-50+150j), (-50+150j), (-50+150j), (-50+150j), (-50+150j))
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op  = filter.fir_filter_ccc(1, 20*[0.5+1j, 0.5+1j])
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -188,9 +189,9 @@ class test_filter(gr_unittest.TestCase):
         expected_data = ((7.537424837948042e-20+7.537424837948042e-20j), (9.131923434324563e-05+9.131923434324563e-05j), (0.0003317668742965907+0.0003317668742965907j), (0.0007230418268591166+0.0007230418268591166j), (0.0012087896466255188+0.0012087896466255188j), (0.0013292605290189385+0.0013292605290189385j), (0.001120875240303576+0.001120875240303576j), (0.000744672492146492+0.000744672492146492j), (0.000429437990533188+0.000429437990533188j), (2.283908543176949e-05+2.283908543176949e-05j), (-0.0002245186478830874-0.0002245186478830874j), (-0.0001157080550910905-0.0001157080550910905j), (0.00041409023106098175+0.00041409023106098175j), (0.0009017843985930085+0.0009017843985930085j), (0.0012520025484263897+0.0012520025484263897j), (0.0014116164529696107+0.0014116164529696107j), (0.001393353333696723+0.001393353333696723j), (0.000912194955162704+0.000912194955162704j), (0.00022649182938039303+0.00022649182938039303j), (-0.00031363096786662936-0.00031363096786662936j), (-0.0003966730728279799-0.0003966730728279799j), (-0.00023757052258588374-0.00023757052258588374j), (0.00021952332463115454+0.00021952332463115454j), (0.0009092430118471384+0.0009092430118471384j), (0.001662317430600524+0.001662317430600524j), (0.0019024648936465383+0.0019024648936465383j), (0.0015955769922584295+0.0015955769922584295j), (0.0009144138311967254+0.0009144138311967254j), (0.0001872836146503687+0.0001872836146503687j), (-0.000581968342885375-0.000581968342885375j), (-0.0009886166080832481-0.0009886166080832481j), (-0.0007480768254026771-0.0007480768254026771j), (0.00018211957649327815+0.00018211957649327815j), (0.0012042406015098095+0.0012042406015098095j), (0.0020200139842927456+0.0020200139842927456j), (0.0023816542234271765+0.0023816542234271765j), (0.002195809967815876+0.002195809967815876j), (0.0012113333214074373+0.0012113333214074373j), (-0.00014088614261709154-0.00014088614261709154j), (-0.0012574587017297745-0.0012574587017297745j))
 
         taps = filter.firdes.low_pass(1, 1, 0.1, 0.01)
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op  = filter.fir_filter_ccc(1, taps)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -209,9 +210,9 @@ class test_filter(gr_unittest.TestCase):
                          (-50+150j), (-50+150j), (-50+150j), (-50+150j),
                          (-50+150j), (-50+150j), (-50+150j), (-50+150j),
                          (-50+150j), (-50+150j), (-50+150j))
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op  = filter.fir_filter_ccc(4, 20*[0.5+1j, 0.5+1j])
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -252,9 +253,9 @@ class test_filter(gr_unittest.TestCase):
                          (50+100j), (50+100j), (50+100j), (50+100j), (50+100j),
                          (50+100j), (50+100j), (50+100j), (50+100j), (50+100j),
                          (50+100j), (50+100j), (50+100j), (50+100j), (50+100j))
-        src = gr.vector_source_s(src_data)
+        src = blocks.vector_source_s(src_data)
         op  = filter.fir_filter_scc(1, 20*[0.5+1j, 0.5+1j])
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -271,9 +272,9 @@ class test_filter(gr_unittest.TestCase):
                          (50+100j), (50+100j), (50+100j), (50+100j), (50+100j),
                          (50+100j), (50+100j), (50+100j), (50+100j), (50+100j),
                          (50+100j), (50+100j), (50+100j), (50+100j), (50+100j))
-        src = gr.vector_source_s(src_data)
+        src = blocks.vector_source_s(src_data)
         op  = filter.fir_filter_scc(4, 20*[0.5+1j, 0.5+1j])
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -291,9 +292,9 @@ class test_filter(gr_unittest.TestCase):
                         50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
                         50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
                         50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op  = filter.fir_filter_fsf(1, 20*[0.5, 0.5])
-        dst = gr.vector_sink_s()
+        dst = blocks.vector_sink_s()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -305,9 +306,9 @@ class test_filter(gr_unittest.TestCase):
         expected_data = (0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 50, 50, 50, 50,
                          50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
                          50, 50, 50, 50, 50, 50, 50, 50, 50, 50)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op  = filter.fir_filter_fsf(4, 20*[0.5, 0.5])
-        dst = gr.vector_sink_s()
+        dst = blocks.vector_sink_s()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
diff --git a/gr-filter/python/qa_fractional_interpolator.py b/gr-filter/python/qa_fractional_interpolator.py
index ab4cc4cf9a..177458a47a 100755
--- a/gr-filter/python/qa_fractional_interpolator.py
+++ b/gr-filter/python/qa_fractional_interpolator.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 import math
 
 def sig_source_f(samp_rate, freq, amp, N):
@@ -50,9 +51,9 @@ class test_fractional_resampler(gr_unittest.TestCase):
 
         freq = 10
         data = sig_source_f(fs, freq, 1, N)
-        signal = gr.vector_source_f(data)
+        signal = blocks.vector_source_f(data)
         op = filter.fractional_interpolator_ff(0, rrate)
-        snk = gr.vector_sink_f()
+        snk = blocks.vector_sink_f()
 
         self.tb.connect(signal, op, snk)
         self.tb.run() 
@@ -76,9 +77,9 @@ class test_fractional_resampler(gr_unittest.TestCase):
 
         freq = 10
         data = sig_source_c(fs, freq, 1, N)
-        signal = gr.vector_source_c(data)
+        signal = blocks.vector_source_c(data)
         op = filter.fractional_interpolator_cc(0.0, rrate)
-        snk = gr.vector_sink_c()
+        snk = blocks.vector_sink_c()
 
         self.tb.connect(signal, op, snk)
         self.tb.run() 
diff --git a/gr-filter/python/qa_freq_xlating_fir_filter.py b/gr-filter/python/qa_freq_xlating_fir_filter.py
index ee38eb7dff..6fdff372af 100755
--- a/gr-filter/python/qa_freq_xlating_fir_filter.py
+++ b/gr-filter/python/qa_freq_xlating_fir_filter.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2008,2010,2012 Free Software Foundation, Inc.
+# Copyright 2008,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,6 +21,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 import cmath, math
 
 class test_freq_xlating_filter(gr_unittest.TestCase):
@@ -102,9 +103,9 @@ class test_freq_xlating_filter(gr_unittest.TestCase):
                          (-0.0016229727771133184+0.0028335191309452057j),
                          (-0.0010890064295381308+0.0037298379465937614j),
                          (-0.00012392725329846144+0.0027196139562875032j))
-        src = gr.vector_source_c(self.src_data)
+        src = blocks.vector_source_c(self.src_data)
         op  = filter.freq_xlating_fir_filter_ccf(1, self.taps, self.fc, self.fs)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -132,9 +133,9 @@ class test_freq_xlating_filter(gr_unittest.TestCase):
                           (-0.002173811662942171+0.007211671676486731j),
                           (0.0022051059640944004-0.00402153329923749j),
                           (-0.0011226903880015016+0.0009080505697056651j))
-        src = gr.vector_source_c(self.src_data)
+        src = blocks.vector_source_c(self.src_data)
         op  = filter.freq_xlating_fir_filter_ccf(4, self.taps, self.fc, self.fs)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -162,9 +163,9 @@ class test_freq_xlating_filter(gr_unittest.TestCase):
                          (0.000998671515845-0.00135387131013j),
                          (0.00104933069088-0.00243046949618j),
                          (0.000765930046327-0.0026717747096j))
-        src = gr.vector_source_c(self.src_data)
+        src = blocks.vector_source_c(self.src_data)
         op  = filter.freq_xlating_fir_filter_ccc(1, self.taps, self.fc, self.fs)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -192,9 +193,9 @@ class test_freq_xlating_filter(gr_unittest.TestCase):
                          (-0.00180401885882+0.00427213776857j),
                          (-0.00122803344857+0.00427243299782j),
                          (0.000414476031438-0.000383919978049j))
-        src = gr.vector_source_c(self.src_data)
+        src = blocks.vector_source_c(self.src_data)
         op  = filter.freq_xlating_fir_filter_ccc(4, self.taps, self.fc, self.fs)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -222,9 +223,9 @@ class test_freq_xlating_filter(gr_unittest.TestCase):
                          (0.000185727752978-0.000154630601173j),
                          (-0.000141745767905-0.000120098840853j),
                          (-3.9850056055e-07+0.000168364742422j))
-        src = gr.vector_source_f(self.src_data)
+        src = blocks.vector_source_f(self.src_data)
         op  = filter.freq_xlating_fir_filter_fcf(1, self.taps, self.fc, self.fs)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -252,9 +253,9 @@ class test_freq_xlating_filter(gr_unittest.TestCase):
                          (-0.00010601492977-0.00015005269961j),
                          (-0.000204817260965+0.000160534662427j),
                          (0.000114742244477+0.000205190313864j))
-        src = gr.vector_source_f(self.src_data)
+        src = blocks.vector_source_f(self.src_data)
         op  = filter.freq_xlating_fir_filter_fcf(4, self.taps, self.fc, self.fs)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -282,9 +283,9 @@ class test_freq_xlating_filter(gr_unittest.TestCase):
                          (-0.000193948610104+0.000113364716526j),
                          (0.000134820176754+0.000142527525895j),
                          (4.74465123261e-05-0.000175131688593j))
-        src = gr.vector_source_f(self.src_data)
+        src = blocks.vector_source_f(self.src_data)
         op  = filter.freq_xlating_fir_filter_fcc(1, self.taps, self.fc, self.fs)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -312,9 +313,9 @@ class test_freq_xlating_filter(gr_unittest.TestCase):
                          (0.000215422536712+0.000116706112749j),
                          (0.000224391726078-0.000156330308528j),
                          (-5.96956087975e-05-0.000211163976928j))
-        src = gr.vector_source_f(self.src_data)
+        src = blocks.vector_source_f(self.src_data)
         op  = filter.freq_xlating_fir_filter_fcc(4, self.taps, self.fc, self.fs)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -342,9 +343,9 @@ class test_freq_xlating_filter(gr_unittest.TestCase):
                          (0.128281414509+0.0677760615945j),
                          (0.0748447552323+0.0619902014732j),
                          (0.0512856245041+0.0775099247694j))
-        src = gr.vector_source_s(self.src_data)
+        src = blocks.vector_source_s(self.src_data)
         op  = filter.freq_xlating_fir_filter_scf(1, self.taps, self.fc, self.fs)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -372,9 +373,9 @@ class test_freq_xlating_filter(gr_unittest.TestCase):
                          (-0.0770940706134-0.230615705252j),
                          (-0.103762261569-0.0382265634835j),
                          (0.11808334291+0.104863762856j))
-        src = gr.vector_source_s(self.src_data)
+        src = blocks.vector_source_s(self.src_data)
         op  = filter.freq_xlating_fir_filter_scf(4, self.taps, self.fc, self.fs)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -402,9 +403,9 @@ class test_freq_xlating_filter(gr_unittest.TestCase):
                          (-0.0151527002454+0.036265052855j),
                          (0.0199296213686+0.0452499426901j),
                          (0.0122985243797+0.0143278446048j))
-        src = gr.vector_source_s(self.src_data)
+        src = blocks.vector_source_s(self.src_data)
         op  = filter.freq_xlating_fir_filter_scc(1, self.taps, self.fc, self.fs)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -432,9 +433,9 @@ class test_freq_xlating_filter(gr_unittest.TestCase):
                          (-0.0108893103898-0.0875638127327j),
                          (0.00204296782613-0.0721434056759j),
                          (-0.00527479872108-0.00698097236454j))
-        src = gr.vector_source_s(self.src_data)
+        src = blocks.vector_source_s(self.src_data)
         op  = filter.freq_xlating_fir_filter_scc(4, self.taps, self.fc, self.fs)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
diff --git a/gr-filter/python/qa_hilbert.py b/gr-filter/python/qa_hilbert.py
index c3522ed192..9af77e8314 100755
--- a/gr-filter/python/qa_hilbert.py
+++ b/gr-filter/python/qa_hilbert.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 import math
 
 def sig_source_f(samp_rate, freq, amp, N):
@@ -107,10 +108,10 @@ class test_hilbert(gr_unittest.TestCase):
         
         N = int(ntaps + sampling_freq * 0.10)
         data = sig_source_f(sampling_freq, sampling_freq * 0.10, 1.0, N)
-        src1 = gr.vector_source_f(data)
+        src1 = blocks.vector_source_f(data)
 
         hilb = filter.hilbert_fc(ntaps)
-        dst1 = gr.vector_sink_c()
+        dst1 = blocks.vector_sink_c()
         tb.connect(src1, hilb)
         tb.connect(hilb, dst1)
         tb.run()
diff --git a/gr-filter/python/qa_iir_filter.py b/gr-filter/python/qa_iir_filter.py
index 645c4b66e7..e341a74c03 100755
--- a/gr-filter/python/qa_iir_filter.py
+++ b/gr-filter/python/qa_iir_filter.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 
 class test_iir_filter(gr_unittest.TestCase):
 
@@ -36,9 +37,9 @@ class test_iir_filter(gr_unittest.TestCase):
         fftaps = ()
         fbtaps = ()
         expected_result = (0, 0, 0, 0, 0, 0, 0, 0)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.iir_filter_ffd(fftaps, fbtaps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
@@ -50,9 +51,9 @@ class test_iir_filter(gr_unittest.TestCase):
         fftaps = (2,)
         fbtaps = (0,)
         expected_result = (2, 4, 6, 8, 10, 12, 14, 16)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.iir_filter_ffd(fftaps, fbtaps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
@@ -64,9 +65,9 @@ class test_iir_filter(gr_unittest.TestCase):
         fftaps = (2, 11)
         fbtaps = (0,  0)
         expected_result = (2, 15, 28, 41, 54, 67, 80, 93)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.iir_filter_ffd(fftaps, fbtaps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
@@ -78,9 +79,9 @@ class test_iir_filter(gr_unittest.TestCase):
         fftaps = (2, 11)
         fbtaps = (0,  -1)
         expected_result = (2, 13, 15, 26, 28, 39, 41, 52)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.iir_filter_ffd(fftaps, fbtaps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
@@ -92,9 +93,9 @@ class test_iir_filter(gr_unittest.TestCase):
         fftaps = (2, 11,  0)
         fbtaps = (0,  -1, 3)
         expected_result = (2, 13, 21, 59, 58, 186, 68, 583)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.iir_filter_ffd(fftaps, fbtaps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
@@ -106,12 +107,12 @@ class test_iir_filter(gr_unittest.TestCase):
         expected_result = (2, 13, 21, 59, 58, 186, 68, 583)
         fftaps = (2, 1)
         fbtaps = (0, -1)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.iir_filter_ffd(fftaps, fbtaps)
         fftaps = (2, 11,  0)
         fbtaps = (0,  -1, 3)
         op.set_taps(fftaps, fbtaps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
@@ -123,12 +124,12 @@ class test_iir_filter(gr_unittest.TestCase):
         expected_result = (2,2,5,5,8,8,11,11)
         fftaps = (2, 1)
         fbtaps = (0, -1)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.iir_filter_ffd(fftaps, fbtaps)
         fftaps = (2,0,1)
         fbtaps = (0, -1)
         op.set_taps(fftaps, fbtaps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
@@ -140,12 +141,12 @@ class test_iir_filter(gr_unittest.TestCase):
         expected_result = (2,4,4,10,18,14,26,56)
         fftaps = (2,)
         fbtaps = (0, 1)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.iir_filter_ffd(fftaps, fbtaps)
         fftaps_data = (1)
         fbtaps = (0,0, -1,3)
         op.set_taps(fftaps, fbtaps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
diff --git a/gr-filter/python/qa_interp_fir_filter.py b/gr-filter/python/qa_interp_fir_filter.py
index 839330539b..243ac7fac6 100755
--- a/gr-filter/python/qa_interp_fir_filter.py
+++ b/gr-filter/python/qa_interp_fir_filter.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2010,2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2010,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 import math
 
 class test_interp_fir_filter(gr_unittest.TestCase):
@@ -45,9 +46,9 @@ class test_interp_fir_filter(gr_unittest.TestCase):
               1300,13017,130170)
         expected_result = tuple([float(x) for x in xr])
 
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.interp_fir_filter_fff(interpolation, taps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op)
         self.tb.connect(op, dst)
         self.tb.run()
diff --git a/gr-filter/python/qa_pfb_arb_resampler.py b/gr-filter/python/qa_pfb_arb_resampler.py
index 98272013ef..504fc815ce 100755
--- a/gr-filter/python/qa_pfb_arb_resampler.py
+++ b/gr-filter/python/qa_pfb_arb_resampler.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 import math
 
 def sig_source_c(samp_rate, freq, amp, N):
@@ -55,9 +56,9 @@ class test_pfb_arb_resampler(gr_unittest.TestCase):
 
         freq = 100
         data = sig_source_f(fs, freq, 1, N)
-        signal = gr.vector_source_f(data)
+        signal = blocks.vector_source_f(data)
         pfb = filter.pfb_arb_resampler_fff(rrate, taps)
-        snk = gr.vector_sink_f()
+        snk = blocks.vector_sink_f()
 
         self.tb.connect(signal, pfb, snk)
         self.tb.run() 
@@ -84,9 +85,9 @@ class test_pfb_arb_resampler(gr_unittest.TestCase):
 
         freq = 100
         data = sig_source_c(fs, freq, 1, N)
-        signal = gr.vector_source_c(data)
+        signal = blocks.vector_source_c(data)
         pfb = filter.pfb_arb_resampler_ccf(rrate, taps)
-        snk = gr.vector_sink_c()
+        snk = blocks.vector_sink_c()
 
         self.tb.connect(signal, pfb, snk)
         self.tb.run() 
diff --git a/gr-filter/python/qa_pfb_channelizer.py b/gr-filter/python/qa_pfb_channelizer.py
index 519afa0458..472aa5a73c 100755
--- a/gr-filter/python/qa_pfb_channelizer.py
+++ b/gr-filter/python/qa_pfb_channelizer.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -55,7 +55,7 @@ class test_pfb_channelizer(gr_unittest.TestCase):
         for i in xrange(len(freqs)):
             f = freqs[i] + (M/2-M+i+1)*fs
             data = sig_source_c(ifs, f, 1, N)
-            signals.append(gr.vector_source_c(data))
+            signals.append(blocks.vector_source_c(data))
             self.tb.connect(signals[i], (add,i))
 
         s2ss = blocks.stream_to_streams(gr.sizeof_gr_complex, M)
@@ -65,7 +65,7 @@ class test_pfb_channelizer(gr_unittest.TestCase):
 
         snks = list()
         for i in xrange(M):
-            snks.append(gr.vector_sink_c())
+            snks.append(blocks.vector_sink_c())
             self.tb.connect((s2ss,i), (pfb,i))
             self.tb.connect((pfb, i), snks[i])
 
diff --git a/gr-filter/python/qa_pfb_decimator.py b/gr-filter/python/qa_pfb_decimator.py
index d20b2fa856..783be05486 100755
--- a/gr-filter/python/qa_pfb_decimator.py
+++ b/gr-filter/python/qa_pfb_decimator.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -56,13 +56,13 @@ class test_pfb_decimator(gr_unittest.TestCase):
         for i in xrange(len(freqs)):
             f = freqs[i] + (M/2-M+i+1)*fs
             data = sig_source_c(ifs, f, 1, N)
-            signals.append(gr.vector_source_c(data))
+            signals.append(blocks.vector_source_c(data))
             self.tb.connect(signals[i], (add,i))
 
-        head = gr.head(gr.sizeof_gr_complex, N)
+        head = blocks.head(gr.sizeof_gr_complex, N)
         s2ss = blocks.stream_to_streams(gr.sizeof_gr_complex, M)
         pfb = filter.pfb_decimator_ccf(M, taps, channel)
-        snk = gr.vector_sink_c()
+        snk = blocks.vector_sink_c()
 
         self.tb.connect(add, head, s2ss)
         for i in xrange(M):
@@ -102,12 +102,12 @@ class test_pfb_decimator(gr_unittest.TestCase):
         for i in xrange(len(freqs)):
             f = freqs[i] + (M/2-M+i+1)*fs
             data = sig_source_c(ifs, f, 1, N)
-            signals.append(gr.vector_source_c(data))
+            signals.append(blocks.vector_source_c(data))
             self.tb.connect(signals[i], (add,i))
 
         s2ss = blocks.stream_to_streams(gr.sizeof_gr_complex, M)
         pfb = filter.pfb_decimator_ccf(M, taps, channel)
-        snk = gr.vector_sink_c()
+        snk = blocks.vector_sink_c()
 
         self.tb.connect(add, s2ss)
         for i in xrange(M):
diff --git a/gr-filter/python/qa_pfb_interpolator.py b/gr-filter/python/qa_pfb_interpolator.py
index ffaeee3f68..6788dbf203 100755
--- a/gr-filter/python/qa_pfb_interpolator.py
+++ b/gr-filter/python/qa_pfb_interpolator.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 import math
 
 def sig_source_c(samp_rate, freq, amp, N):
@@ -50,9 +51,9 @@ class test_pfb_interpolator(gr_unittest.TestCase):
 
         freq = 100
         data = sig_source_c(fs, freq, 1, N)
-        signal = gr.vector_source_c(data)
+        signal = blocks.vector_source_c(data)
         pfb = filter.pfb_interpolator_ccf(M, taps)
-        snk = gr.vector_sink_c()
+        snk = blocks.vector_sink_c()
 
         self.tb.connect(signal, pfb)
         self.tb.connect(pfb, snk)
diff --git a/gr-filter/python/qa_pfb_synthesizer.py b/gr-filter/python/qa_pfb_synthesizer.py
index 2da02b58d3..aa3c697b93 100755
--- a/gr-filter/python/qa_pfb_synthesizer.py
+++ b/gr-filter/python/qa_pfb_synthesizer.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 import math
 
 def sig_source_c(samp_rate, freq, amp, N):
@@ -52,10 +53,10 @@ class test_pfb_synthesizer(gr_unittest.TestCase):
         freqs = [0, 100, 200, -200, -100]
         for i in xrange(len(freqs)):
             data = sig_source_c(fs, freqs[i], 1, N)
-            signals.append(gr.vector_source_c(data))
+            signals.append(blocks.vector_source_c(data))
 
         pfb = filter.pfb_synthesizer_ccf(M, taps)
-        snk = gr.vector_sink_c()
+        snk = blocks.vector_sink_c()
 
         for i in xrange(M):
             self.tb.connect(signals[i], (pfb,i))
diff --git a/gr-filter/python/qa_rational_resampler.py b/gr-filter/python/qa_rational_resampler.py
index eb86ef5425..76930ba052 100755
--- a/gr-filter/python/qa_rational_resampler.py
+++ b/gr-filter/python/qa_rational_resampler.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2005,2006,2007,2010 Free Software Foundation, Inc.
+# Copyright 2005-2007,2010,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -22,6 +22,7 @@
 
 from gnuradio import gr, gr_unittest
 import filter_swig as filter
+import blocks_swig as blocks
 import math
 import random
 import sys
@@ -37,9 +38,9 @@ def random_floats(n):
 
 def reference_dec_filter(src_data, decim, taps):
     tb = gr.top_block()
-    src = gr.vector_source_f(src_data)
+    src = blocks.vector_source_f(src_data)
     op = filter.fir_filter_fff(decim, taps)
-    dst = gr.vector_sink_f()
+    dst = blocks.vector_sink_f()
     tb.connect(src, op, dst)
     tb.run()
     result_data = dst.data()
@@ -48,9 +49,9 @@ def reference_dec_filter(src_data, decim, taps):
 
 def reference_interp_filter(src_data, interp, taps):
     tb = gr.top_block()
-    src = gr.vector_source_f(src_data)
+    src = blocks.vector_source_f(src_data)
     op = filter.interp_fir_filter_fff(interp, taps)
-    dst = gr.vector_sink_f()
+    dst = blocks.vector_sink_f()
     tb.connect(src, op, dst)
     tb.run()
     result_data = dst.data()
@@ -59,10 +60,10 @@ def reference_interp_filter(src_data, interp, taps):
 
 def reference_interp_dec_filter(src_data, interp, decim, taps):
     tb = gr.top_block()
-    src = gr.vector_source_f(src_data)
+    src = blocks.vector_source_f(src_data)
     up = filter.interp_fir_filter_fff(interp, (1,))
     dn = filter.fir_filter_fff(decim, taps)
-    dst = gr.vector_sink_f()
+    dst = blocks.vector_sink_f()
     tb.connect(src, up, dn, dst)
     tb.run()
     result_data = dst.data()
@@ -86,9 +87,9 @@ class test_rational_resampler (gr_unittest.TestCase):
         expected_result = tuple([float(x) for x in xr])
 
 	tb = gr.top_block()
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.rational_resampler_base_fff(1, 1, taps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         tb.connect(src, op)
         tb.connect(op, dst)
         tb.run()
@@ -109,9 +110,9 @@ class test_rational_resampler (gr_unittest.TestCase):
         expected_result = tuple([float(x) for x in xr])
 
 	tb = gr.top_block()
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.rational_resampler_base_fff(interpolation, 1, taps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         tb.connect(src, op)
         tb.connect(op, dst)
         tb.run()
@@ -126,9 +127,9 @@ class test_rational_resampler (gr_unittest.TestCase):
         expected_result = reference_interp_filter(src_data, interpolation, taps)
 
 	tb = gr.top_block()
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.rational_resampler_base_fff(interpolation, 1, taps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         tb.connect(src, op)
         tb.connect(op, dst)
         tb.run()
@@ -146,9 +147,9 @@ class test_rational_resampler (gr_unittest.TestCase):
         expected_result = reference_dec_filter(src_data, decimation, taps)
 
 	tb = gr.top_block()
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.rational_resampler_base_fff(1, decimation, taps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         tb.connect(src, op)
         tb.connect(op, dst)
         tb.run()
@@ -176,9 +177,9 @@ class test_rational_resampler (gr_unittest.TestCase):
                     expected_result = reference_dec_filter(src_data, decim, taps)
 
                     tb = gr.top_block()
-                    src = gr.vector_source_f(src_data)
+                    src = blocks.vector_source_f(src_data)
                     op = filter.rational_resampler_base_fff(1, decim, taps)
-                    dst = gr.vector_sink_f()
+                    dst = blocks.vector_sink_f()
                     tb.connect(src, op, dst)
                     tb.run()
                     tb = None
@@ -210,9 +211,9 @@ class test_rational_resampler (gr_unittest.TestCase):
                     expected_result = reference_interp_filter(src_data, interp, taps)
 
                     tb = gr.top_block()
-                    src = gr.vector_source_f(src_data)
+                    src = blocks.vector_source_f(src_data)
                     op = filter.rational_resampler_base_fff(interp, 1, taps)
-                    dst = gr.vector_sink_f()
+                    dst = blocks.vector_sink_f()
                     tb.connect(src, op, dst)
                     tb.run()
                     tb = None
@@ -238,9 +239,9 @@ class test_rational_resampler (gr_unittest.TestCase):
         expected_result = reference_interp_dec_filter(src_data, interp, decimation, taps)
 
 	tb = gr.top_block()
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.rational_resampler_base_fff(interp, decimation, taps)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         tb.connect(src, op)
         tb.connect(op, dst)
         tb.run()
diff --git a/gr-filter/python/qa_single_pole_iir.py b/gr-filter/python/qa_single_pole_iir.py
index d28ab643fd..bc2d54c959 100755
--- a/gr-filter/python/qa_single_pole_iir.py
+++ b/gr-filter/python/qa_single_pole_iir.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2005,2007,2010 Free Software Foundation, Inc.
+# Copyright 2005,2007,2010,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -35,9 +35,9 @@ class test_single_pole_iir_filter(gr_unittest.TestCase):
     def test_ff_001(self):
         src_data = (0, 1000, 2000, 3000, 4000, 5000)
         expected_result = src_data
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.single_pole_iir_filter_ff(1.0)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -46,9 +46,9 @@ class test_single_pole_iir_filter(gr_unittest.TestCase):
     def test_ff_002(self):
         src_data = (0, 1000, 2000, 3000, 4000, 5000)
         expected_result = (0, 125, 359.375, 689.453125, 1103.271484, 1590.36255)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         op = filter.single_pole_iir_filter_ff(0.125)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -58,11 +58,11 @@ class test_single_pole_iir_filter(gr_unittest.TestCase):
         block_size = 2
         src_data = (0, 1000, 2000, 3000, 4000, 5000)
         expected_result = (0, 125, 250, 484.375, 718.75, 1048.828125)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         s2p = blocks.stream_to_vector(gr.sizeof_float, block_size)
         op = filter.single_pole_iir_filter_ff (0.125, block_size)
         p2s = blocks.vector_to_stream(gr.sizeof_float, block_size)
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, s2p, op, p2s, dst)
         self.tb.run()
         result_data = dst.data()
@@ -71,9 +71,9 @@ class test_single_pole_iir_filter(gr_unittest.TestCase):
     def test_cc_001(self):
         src_data = (0+0j, 1000+1000j, 2000+2000j, 3000+3000j, 4000+4000j, 5000+5000j)
         expected_result = src_data
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = filter.single_pole_iir_filter_cc(1.0)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -85,9 +85,9 @@ class test_single_pole_iir_filter(gr_unittest.TestCase):
         expected_result = (complex(0,0), complex(125,-125), complex(359.375,-359.375),
                            complex(689.453125,-689.453125), complex(1103.271484,-1103.271484),
                            complex(1590.36255,-1590.36255))
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         op = filter.single_pole_iir_filter_cc(0.125)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, op, dst)
         self.tb.run()
         result_data = dst.data()
@@ -100,11 +100,11 @@ class test_single_pole_iir_filter(gr_unittest.TestCase):
         expected_result = (complex(0,0), complex(125,-125), complex(250,-250),
                            complex(484.375,-484.375), complex(718.75,-718.75),
                            complex(1048.828125,-1048.828125))
-        src = gr.vector_source_c(src_data)
+        src = blocks.vector_source_c(src_data)
         s2p = blocks.stream_to_vector(gr.sizeof_gr_complex, block_size)
         op = filter.single_pole_iir_filter_cc(0.125, block_size)
         p2s = blocks.vector_to_stream(gr.sizeof_gr_complex, block_size)
-        dst = gr.vector_sink_c()
+        dst = blocks.vector_sink_c()
         self.tb.connect(src, s2p, op, p2s, dst)
         self.tb.run()
         result_data = dst.data()
diff --git a/gr-howto-write-a-block/apps/howto_square.grc b/gr-howto-write-a-block/apps/howto_square.grc
index 1f3324e4eb..ee2c8db271 100644
--- a/gr-howto-write-a-block/apps/howto_square.grc
+++ b/gr-howto-write-a-block/apps/howto_square.grc
@@ -209,7 +209,7 @@
     </param>
   </block>
   <block>
-    <key>gr_vector_source_x</key>
+    <key>blocks_vector_source_x</key>
     <param>
       <key>id</key>
       <value>src</value>
diff --git a/gr-howto-write-a-block/apps/howto_square.py b/gr-howto-write-a-block/apps/howto_square.py
index fd03b74c42..4a9bfe3f8e 100755
--- a/gr-howto-write-a-block/apps/howto_square.py
+++ b/gr-howto-write-a-block/apps/howto_square.py
@@ -30,7 +30,7 @@ class howto_square(grc_wxgui.top_block_gui):
 		# Blocks
 		##################################################
 		self.thr = blocks.throttle(gr.sizeof_float*1, samp_rate)
-		self.src = gr.vector_source_f(([float(n)-50 for n in range(100)]), True, 1)
+		self.src = blocks.vector_source_f(([float(n)-50 for n in range(100)]), True, 1)
 		self.sqr = howto.square_ff()
 		self.sink2 = scopesink2.scope_sink_f(
 			self.GetWin(),
diff --git a/gr-howto-write-a-block/lib/qa_square2_ff.cc b/gr-howto-write-a-block/lib/qa_square2_ff.cc
index 672e75691b..b73c7ce1d7 100644
--- a/gr-howto-write-a-block/lib/qa_square2_ff.cc
+++ b/gr-howto-write-a-block/lib/qa_square2_ff.cc
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2011,2012 Free Software Foundation, Inc.
+ * Copyright 2011-2013 Free Software Foundation, Inc.
  *
  * This file is part of GNU Radio
  *
@@ -24,8 +24,8 @@
 
 #include <vector>
 #include <gr_top_block.h>
-#include <gr_vector_source_f.h>
-#include <gr_vector_sink_f.h>
+#include <blocks/vector_source_f.h>
+#include <blocks/vector_sink_f.h>
 #include <howto/square2_ff.h>
 
 namespace gr {
@@ -43,8 +43,8 @@ namespace gr {
       }
       
       gr_top_block_sptr tb = gr_make_top_block("dial_tone");
-      gr_vector_source_f_sptr src = gr_make_vector_source_f(data);
-      gr_vector_sink_f_sptr snk = gr_make_vector_sink_f();
+      gr::blocks::vector_source_f::sptr src = gr::blocks::vector_source_f::make(data);
+      gr::blocks::vector_sink_f::sptr snk = gr::blocks::vector_sink_f::make();
 
       square2_ff::sptr op = square2_ff::make();
       
diff --git a/gr-howto-write-a-block/lib/qa_square_ff.cc b/gr-howto-write-a-block/lib/qa_square_ff.cc
index dedd934e16..a8e7ac2b92 100644
--- a/gr-howto-write-a-block/lib/qa_square_ff.cc
+++ b/gr-howto-write-a-block/lib/qa_square_ff.cc
@@ -1,6 +1,6 @@
 /* -*- c++ -*- */
 /*
- * Copyright 2011,2012 Free Software Foundation, Inc.
+ * Copyright 2011-2013 Free Software Foundation, Inc.
  *
  * This file is part of GNU Radio
  *
@@ -24,8 +24,8 @@
 
 #include <vector>
 #include <gr_top_block.h>
-#include <gr_vector_source_f.h>
-#include <gr_vector_sink_f.h>
+#include <blocks/vector_source_f.h>
+#include <blocks/vector_sink_f.h>
 #include <howto/square_ff.h>
 
 namespace gr {
@@ -43,8 +43,8 @@ namespace gr {
       }
       
       gr_top_block_sptr tb = gr_make_top_block("dial_tone");
-      gr_vector_source_f_sptr src = gr_make_vector_source_f(data);
-      gr_vector_sink_f_sptr snk = gr_make_vector_sink_f();
+      gr::blocks::vector_source_f::sptr src = gr::blocks::vector_source_f::make(data);
+      gr::blocks::vector_sink_f::sptr snk = gr::blocks::vector_sink_f::make();
 
       square_ff::sptr op = square_ff::make();
       
diff --git a/gr-howto-write-a-block/python/qa_howto.py b/gr-howto-write-a-block/python/qa_howto.py
index 203b06922b..7b58c35f4d 100644
--- a/gr-howto-write-a-block/python/qa_howto.py
+++ b/gr-howto-write-a-block/python/qa_howto.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2004,2007,2012 Free Software Foundation, Inc.
+# Copyright 2004,2007,2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,6 +21,7 @@
 #
 
 from gnuradio import gr, gr_unittest
+from gnuradio import blocks
 import howto_swig as howto
 from square3_ff import square3_ff
 
@@ -35,9 +36,9 @@ class qa_howto(gr_unittest.TestCase):
     def test_001_square_ff(self):
         src_data = (-3, 4, -5.5, 2, 3)
         expected_result = (9, 16, 30.25, 4, 9)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         sqr = howto.square_ff()
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, sqr)
         self.tb.connect(sqr, dst)
         self.tb.run()
@@ -47,9 +48,9 @@ class qa_howto(gr_unittest.TestCase):
     def test_002_square2_ff(self):
         src_data = (-3, 4, -5.5, 2, 3)
         expected_result = (9, 16, 30.25, 4, 9)
-        src = gr.vector_source_f(src_data)
+        src = blocks.vector_source_f(src_data)
         sqr = howto.square2_ff()
-        dst = gr.vector_sink_f()
+        dst = blocks.vector_sink_f()
         self.tb.connect(src, sqr)
         self.tb.connect(sqr, dst)
         self.tb.run()
@@ -59,9 +60,9 @@ class qa_howto(gr_unittest.TestCase):
     def test_003_square3_ff (self):
         src_data = (-3, 4, -5.5, 2, 3)
         expected_result = (9, 16, 30.25, 4, 9)
-        src = gr.vector_source_f (src_data)
+        src = blocks.vector_source_f (src_data)
         sqr = square3_ff ()
-        dst = gr.vector_sink_f ()
+        dst = blocks.vector_sink_f ()
         self.tb.connect (src, sqr)
         self.tb.connect (sqr, dst)
         self.tb.run ()
diff --git a/gr-pager/apps/usrp_flex_all b/gr-pager/apps/usrp_flex_all
index 58fcc0af45..4d950866f0 100755
--- a/gr-pager/apps/usrp_flex_all
+++ b/gr-pager/apps/usrp_flex_all
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2006,2007,2009 Free Software Foundation, Inc.
+# Copyright 2006,2007,2009,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -105,7 +105,7 @@ class app_top_block(gr.top_block):
 		freq = options.freq-(self.nchan-i)*25e3
 
 	    if (freq < 929.0e6 or freq > 932.0e6):
-                self.connect((self.bank, i), gr.null_sink(gr.sizeof_gr_complex))
+                self.connect((self.bank, i), blocks.null_sink(gr.sizeof_gr_complex))
 	    else:
             	self.connect((self.bank, i), pager.flex_demod(queue, freq, options.verbose, options.log))
                 if options.log:
diff --git a/gr-pager/apps/usrp_rx_flex.grc b/gr-pager/apps/usrp_rx_flex.grc
index 79312a4148..b6833aa526 100644
--- a/gr-pager/apps/usrp_rx_flex.grc
+++ b/gr-pager/apps/usrp_rx_flex.grc
@@ -1523,10 +1523,10 @@
     </param>
   </block>
   <block>
-    <key>gr_null_sink</key>
+    <key>blocks_null_sink</key>
     <param>
       <key>id</key>
-      <value>gr_null_sink_0</value>
+      <value>blocks_null_sink_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1607,10 +1607,10 @@
     </param>
   </block>
   <block>
-    <key>gr_null_sink</key>
+    <key>blocks_null_sink</key>
     <param>
       <key>id</key>
-      <value>gr_null_sink_0_0</value>
+      <value>blocks_null_sink_0_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1634,10 +1634,10 @@
     </param>
   </block>
   <block>
-    <key>gr_null_sink</key>
+    <key>blocks_null_sink</key>
     <param>
       <key>id</key>
-      <value>gr_null_sink_0_1</value>
+      <value>blocks_null_sink_0_1</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1661,10 +1661,10 @@
     </param>
   </block>
   <block>
-    <key>gr_null_sink</key>
+    <key>blocks_null_sink</key>
     <param>
       <key>id</key>
-      <value>gr_null_sink_0_2</value>
+      <value>blocks_null_sink_0_2</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1779,25 +1779,25 @@
   </connection>
   <connection>
     <source_block_id>pager_flex_deinterleave_0</source_block_id>
-    <sink_block_id>gr_null_sink_0</sink_block_id>
+    <sink_block_id>blocks_null_sink_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
     <source_block_id>pager_flex_deinterleave_0_1_0</source_block_id>
-    <sink_block_id>gr_null_sink_0_0</sink_block_id>
+    <sink_block_id>blocks_null_sink_0_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
     <source_block_id>pager_flex_deinterleave_0_1</source_block_id>
-    <sink_block_id>gr_null_sink_0_1</sink_block_id>
+    <sink_block_id>blocks_null_sink_0_1</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
   <connection>
     <source_block_id>pager_flex_deinterleave_0_0</source_block_id>
-    <sink_block_id>gr_null_sink_0_2</sink_block_id>
+    <sink_block_id>blocks_null_sink_0_2</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/gr-pager/apps/usrp_rx_flex.py b/gr-pager/apps/usrp_rx_flex.py
index 6bb93ee756..4de4ded9c4 100755
--- a/gr-pager/apps/usrp_rx_flex.py
+++ b/gr-pager/apps/usrp_rx_flex.py
@@ -7,6 +7,7 @@
 
 from gnuradio import eng_notation
 from gnuradio import gr
+from gnuradio import blocks
 from gnuradio import filter
 from gnuradio import pager
 from gnuradio.eng_option import eng_option
@@ -175,10 +176,10 @@ class usrp_rx_flex(grc_wxgui.top_block_gui):
 		##################################################
 		self.fm_demod = gr.quadrature_demod_cf(demod_k)
 		self.gr_freq_xlating_fir_filter_xxx_0 = gr.freq_xlating_fir_filter_ccc(channel_decim, (channel_taps), band_freq-freq+offset, sample_rate)
-		self.gr_null_sink_0 = gr.null_sink(gr.sizeof_int*1)
-		self.gr_null_sink_0_0 = gr.null_sink(gr.sizeof_int*1)
-		self.gr_null_sink_0_1 = gr.null_sink(gr.sizeof_int*1)
-		self.gr_null_sink_0_2 = gr.null_sink(gr.sizeof_int*1)
+		self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_int*1)
+		self.blocks_null_sink_0_0 = blocks.null_sink(gr.sizeof_int*1)
+		self.blocks_null_sink_0_1 = blocks.null_sink(gr.sizeof_int*1)
+		self.blocks_null_sink_0_2 = blocks.null_sink(gr.sizeof_int*1)
 		self.pager_flex_deinterleave_0 = pager.flex_deinterleave()
 		self.pager_flex_deinterleave_0_0 = pager.flex_deinterleave()
 		self.pager_flex_deinterleave_0_1 = pager.flex_deinterleave()
@@ -255,10 +256,10 @@ class usrp_rx_flex(grc_wxgui.top_block_gui):
 		self.connect((self.pager_flex_sync_0, 2), (self.pager_flex_deinterleave_0_1, 0))
 		self.connect((self.pager_flex_sync_0, 0), (self.pager_flex_deinterleave_0, 0))
 		self.connect((self.pager_flex_sync_0, 3), (self.pager_flex_deinterleave_0_0, 0))
-		self.connect((self.pager_flex_deinterleave_0, 0), (self.gr_null_sink_0, 0))
-		self.connect((self.pager_flex_deinterleave_0_1_0, 0), (self.gr_null_sink_0_0, 0))
-		self.connect((self.pager_flex_deinterleave_0_1, 0), (self.gr_null_sink_0_1, 0))
-		self.connect((self.pager_flex_deinterleave_0_0, 0), (self.gr_null_sink_0_2, 0))
+		self.connect((self.pager_flex_deinterleave_0, 0), (self.blocks_null_sink_0, 0))
+		self.connect((self.pager_flex_deinterleave_0_1_0, 0), (self.blocks_null_sink_0_0, 0))
+		self.connect((self.pager_flex_deinterleave_0_1, 0), (self.blocks_null_sink_0_1, 0))
+		self.connect((self.pager_flex_deinterleave_0_0, 0), (self.blocks_null_sink_0_2, 0))
 
 	def set_config_filename(self, config_filename):
 		self.config_filename = config_filename
diff --git a/gr-qtgui/apps/gr_constellation_plot b/gr-qtgui/apps/gr_constellation_plot
index 0687443218..559b643c53 100755
--- a/gr-qtgui/apps/gr_constellation_plot
+++ b/gr-qtgui/apps/gr_constellation_plot
@@ -21,6 +21,7 @@
 #
 
 from gnuradio import gr
+from gnuradio import blocks
 from gnuradio.eng_option import eng_option
 from optparse import OptionParser
 import os, sys
@@ -67,7 +68,7 @@ class my_top_block(gr.top_block):
 
         self.qapp = QtGui.QApplication(sys.argv)
 
-        self.skip = gr.skiphead(gr.sizeof_gr_complex, self._start)
+        self.skip = blocks.skiphead(gr.sizeof_gr_complex, self._start)
         self.gui_snk = qtgui.const_sink_c(self._nsamps,
                                           "GNU Radio Constellation Plot",
                                           self._nsigs)
@@ -77,7 +78,7 @@ class my_top_block(gr.top_block):
         self._data_max = -sys.maxint - 1
         for f in filelist:
             data,_min,_max = read_samples_c(f, self._start, self._nsamps)
-            self.srcs.append(gr.vector_source_c(data))
+            self.srcs.append(blocks.vector_source_c(data))
 
             if(_min < self._data_min):
                 self._data_min = _min
diff --git a/gr-qtgui/apps/gr_psd_plot_c b/gr-qtgui/apps/gr_psd_plot_c
index f2789ef34b..6ade908bd4 100755
--- a/gr-qtgui/apps/gr_psd_plot_c
+++ b/gr-qtgui/apps/gr_psd_plot_c
@@ -21,6 +21,7 @@
 #
 
 from gnuradio import gr
+from gnuradio import blocks
 from gnuradio import filter
 import scipy
 
@@ -46,7 +47,7 @@ class psd_plot_c(plot_base.plot_base):
 
         self.read_samples = plot_base.read_samples_c
         self.dsize = gr.sizeof_gr_complex
-        self.src_type = gr.vector_source_c
+        self.src_type = blocks.vector_source_c
         self.gui_snk = qtgui.freq_sink_c(self._psd_size, filter.firdes.WIN_BLACKMAN_hARRIS,
                                          self._center_freq, self._samp_rate,
                                          "GNU Radio PSD Plot", self._nsigs)
diff --git a/gr-qtgui/apps/gr_psd_plot_f b/gr-qtgui/apps/gr_psd_plot_f
index c6b70baf27..792b04290b 100755
--- a/gr-qtgui/apps/gr_psd_plot_f
+++ b/gr-qtgui/apps/gr_psd_plot_f
@@ -21,6 +21,7 @@
 #
 
 from gnuradio import gr
+from gnuradio import blocks
 from gnuradio import filter
 import scipy
 
@@ -46,7 +47,7 @@ class psd_plot_f(plot_base.plot_base):
 
         self.read_samples = plot_base.read_samples_f
         self.dsize = gr.sizeof_float
-        self.src_type = gr.vector_source_f
+        self.src_type = blocks.vector_source_f
         self.gui_snk = qtgui.freq_sink_f(self._psd_size, filter.firdes.WIN_BLACKMAN_hARRIS,
                                          self._center_freq, self._samp_rate,
                                          "GNU Radio PSD Plot", self._nsigs)
diff --git a/gr-qtgui/apps/gr_spectrogram_plot_c b/gr-qtgui/apps/gr_spectrogram_plot_c
index 059f65cd99..bb4fad1b7a 100755
--- a/gr-qtgui/apps/gr_spectrogram_plot_c
+++ b/gr-qtgui/apps/gr_spectrogram_plot_c
@@ -21,6 +21,7 @@
 #
 
 from gnuradio import gr
+from gnuradio import blocks
 from gnuradio import filter
 import scipy
 
@@ -46,7 +47,7 @@ class spectrogram_plot_c(plot_base.plot_base):
 
         self.read_samples = plot_base.read_samples_c
         self.dsize = gr.sizeof_gr_complex
-        self.src_type = gr.vector_source_c
+        self.src_type = blocks.vector_source_c
         self.gui_snk = qtgui.waterfall_sink_c(self._psd_size, filter.firdes.WIN_BLACKMAN_hARRIS,
                                               self._center_freq, self._samp_rate,
                                               "GNU Radio Spectrogram Plot", self._nsigs)
diff --git a/gr-qtgui/apps/gr_spectrogram_plot_f b/gr-qtgui/apps/gr_spectrogram_plot_f
index be9c981532..dcb0305bf5 100755
--- a/gr-qtgui/apps/gr_spectrogram_plot_f
+++ b/gr-qtgui/apps/gr_spectrogram_plot_f
@@ -21,6 +21,7 @@
 #
 
 from gnuradio import gr
+from gnuradio import blocks
 from gnuradio import filter
 import scipy
 
@@ -46,7 +47,7 @@ class spectrogram_plot_f(plot_base.plot_base):
 
         self.read_samples = plot_base.read_samples_f
         self.dsize = gr.sizeof_float
-        self.src_type = gr.vector_source_f
+        self.src_type = blocks.vector_source_f
         self.gui_snk = qtgui.waterfall_sink_f(self._psd_size, filter.firdes.WIN_BLACKMAN_hARRIS,
                                               self._center_freq, self._samp_rate,
                                               "GNU Radio Spectrogram Plot", self._nsigs)
diff --git a/gr-qtgui/apps/gr_time_plot_c b/gr-qtgui/apps/gr_time_plot_c
index a7c39a24b9..174b3ee1ed 100755
--- a/gr-qtgui/apps/gr_time_plot_c
+++ b/gr-qtgui/apps/gr_time_plot_c
@@ -21,6 +21,7 @@
 #
 
 from gnuradio import gr
+from gnuradio import blocks
 import scipy
 
 try:
@@ -45,7 +46,7 @@ class plot_time_c(plot_base.plot_base):
                                      auto_scale)
         self.read_samples = plot_base.read_samples_c
         self.dsize = gr.sizeof_gr_complex
-        self.src_type = gr.vector_source_c
+        self.src_type = blocks.vector_source_c
         self.gui_snk = qtgui.time_sink_c(self._nsamps, self._samp_rate,
                                          "GNU Radio Time Plot", self._nsigs)
         self._nsigs *= 2 # complex plots have real/imag
diff --git a/gr-qtgui/apps/gr_time_plot_f b/gr-qtgui/apps/gr_time_plot_f
index 9b29709b10..9140b61220 100755
--- a/gr-qtgui/apps/gr_time_plot_f
+++ b/gr-qtgui/apps/gr_time_plot_f
@@ -21,6 +21,7 @@
 #
 
 from gnuradio import gr
+from gnuradio import blocks
 import scipy
 
 try:
@@ -45,7 +46,7 @@ class plot_time_f(plot_base.plot_base):
                                      auto_scale)
         self.read_samples = plot_base.read_samples_f
         self.dsize = gr.sizeof_float
-        self.src_type = gr.vector_source_f
+        self.src_type = blocks.vector_source_f
         self.gui_snk = qtgui.time_sink_f(self._nsamps, self._samp_rate,
                                          "GNU Radio Time Plot", self._nsigs)
         self.setup()
diff --git a/gr-qtgui/apps/gr_time_raster_b b/gr-qtgui/apps/gr_time_raster_b
index a326a126c4..3e81c317d6 100755
--- a/gr-qtgui/apps/gr_time_raster_b
+++ b/gr-qtgui/apps/gr_time_raster_b
@@ -21,6 +21,7 @@
 #
 
 from gnuradio import gr
+from gnuradio import blocks
 import scipy
 
 try:
@@ -48,7 +49,7 @@ class plot_time_raster_b(plot_base.plot_base):
         self._ncols = ncols
         self.read_samples = plot_base.read_samples_b
         self.dsize = gr.sizeof_char
-        self.src_type = gr.vector_source_b
+        self.src_type = blocks.vector_source_b
         self.gui_snk = qtgui.time_raster_sink_b(self._samp_rate, self._nrows, self._ncols,
                                                 [], [], "GNU Radio Time Plot", self._nsigs)
         self.setup()
diff --git a/gr-qtgui/apps/gr_time_raster_f b/gr-qtgui/apps/gr_time_raster_f
index a6cb897c0b..6b5e5c20e9 100755
--- a/gr-qtgui/apps/gr_time_raster_f
+++ b/gr-qtgui/apps/gr_time_raster_f
@@ -21,6 +21,7 @@
 #
 
 from gnuradio import gr
+from gnuradio import blocks
 import scipy
 
 try:
@@ -48,7 +49,7 @@ class plot_time_raster_f(plot_base.plot_base):
         self._ncols = ncols
         self.read_samples = plot_base.read_samples_f
         self.dsize = gr.sizeof_float
-        self.src_type = gr.vector_source_f
+        self.src_type = blocks.vector_source_f
         self.gui_snk = qtgui.time_raster_sink_f(self._samp_rate, self._nrows, self._ncols,
                                                 [], [], "GNU Radio Time Plot", self._nsigs)
         self.setup()
diff --git a/gr-qtgui/apps/plot_base.py b/gr-qtgui/apps/plot_base.py
index 52c888cff3..b279e1e977 100644
--- a/gr-qtgui/apps/plot_base.py
+++ b/gr-qtgui/apps/plot_base.py
@@ -91,7 +91,7 @@ def read_samples_b(filename, start, in_size, min_size=0):
                            scipy.int8, gr.sizeof_char)
 
     # Bit of a hack since we want to read the data as signed ints, but
-    # the gr.vector_source_b will only accept unsigned. We read in as
+    # the blocks.vector_source_b will only accept unsigned. We read in as
     # signed, do our min/max and things on that, then convert here.
     d = scipy.array(d, dtype=scipy.uint8).tolist()
     return d,mn,mx
@@ -122,7 +122,7 @@ class source_ints_to_float(gr.hier_block2):
 	gr.hier_block2.__init__(self, "ints_to_floats",
 				gr.io_signature(0, 0, 0),
 				gr.io_signature(1, 1, gr.sizeof_float))
-        self.src = gr.vector_source_i(data)
+        self.src = blocks.vector_source_i(data)
         self.cvt = blocks.int_to_float()
         self.connect(self.src, self.cvt, self)
 
@@ -134,7 +134,7 @@ class source_shorts_to_float(gr.hier_block2):
 	gr.hier_block2.__init__(self, "shorts_to_floats",
 				gr.io_signature(0, 0, 0),
 				gr.io_signature(1, 1, gr.sizeof_float))
-        self.src = gr.vector_source_s(data)
+        self.src = blocks.vector_source_s(data)
         self.cvt = blocks.short_to_float()
         self.connect(self.src, self.cvt, self)
 
@@ -146,7 +146,7 @@ class source_chars_to_float(gr.hier_block2):
 	gr.hier_block2.__init__(self, "chars_to_floats",
 				gr.io_signature(0, 0, 0),
 				gr.io_signature(1, 1, gr.sizeof_float))
-        self.src = gr.vector_source_b(data)
+        self.src = blocks.vector_source_b(data)
         self.cvt = blocks.char_to_float()
         self.connect(self.src, self.cvt, self)
 
diff --git a/gr-qtgui/apps/plot_psd_base.py b/gr-qtgui/apps/plot_psd_base.py
index a4a6cb871a..bb1567e014 100644
--- a/gr-qtgui/apps/plot_psd_base.py
+++ b/gr-qtgui/apps/plot_psd_base.py
@@ -72,7 +72,7 @@ class plot_base(gr.top_block):
         self.qapp = QtGui.QApplication(sys.argv)
 
     def setup(self):
-        self.skip = gr.skiphead(self.dsize, self._start)
+        self.skip = blocks.skiphead(self.dsize, self._start)
 
         n = 0
         self.srcs = list()
diff --git a/gr-qtgui/apps/plot_spectrogram_base.py b/gr-qtgui/apps/plot_spectrogram_base.py
index adfbfd032f..a3fdf65117 100644
--- a/gr-qtgui/apps/plot_spectrogram_base.py
+++ b/gr-qtgui/apps/plot_spectrogram_base.py
@@ -72,7 +72,7 @@ class plot_base(gr.top_block):
         self.qapp = QtGui.QApplication(sys.argv)
 
     def setup(self):
-        self.skip = gr.skiphead(self.dsize, self._start)
+        self.skip = blocks.skiphead(self.dsize, self._start)
 
         n = 0
         self.srcs = list()
diff --git a/gr-qtgui/apps/plot_time_base.py b/gr-qtgui/apps/plot_time_base.py
index c80bace1b6..942500c627 100644
--- a/gr-qtgui/apps/plot_time_base.py
+++ b/gr-qtgui/apps/plot_time_base.py
@@ -71,7 +71,7 @@ class plot_base(gr.top_block):
         self.qapp = QtGui.QApplication(sys.argv)
 
     def setup(self):
-        self.skip = gr.skiphead(self.dsize, self._start)
+        self.skip = blocks.skiphead(self.dsize, self._start)
 
         n = 0
         self.srcs = list()
diff --git a/gr-qtgui/apps/plot_time_raster_base.py b/gr-qtgui/apps/plot_time_raster_base.py
index ff3cc2869d..2fc498ba28 100644
--- a/gr-qtgui/apps/plot_time_raster_base.py
+++ b/gr-qtgui/apps/plot_time_raster_base.py
@@ -71,7 +71,7 @@ class plot_base(gr.top_block):
         self.qapp = QtGui.QApplication(sys.argv)
 
     def setup(self):
-        self.skip = gr.skiphead(self.dsize, self._start)
+        self.skip = blocks.skiphead(self.dsize, self._start)
 
         n = 0
         self.srcs = list()
diff --git a/gr-qtgui/apps/qt_digital.py b/gr-qtgui/apps/qt_digital.py
index 445d6d4fc1..fef4f448b4 100755
--- a/gr-qtgui/apps/qt_digital.py
+++ b/gr-qtgui/apps/qt_digital.py
@@ -182,7 +182,7 @@ class my_top_block(gr.top_block):
         fftsize = 2048
 
         self.data = scipy.random.randint(0, 255, 1000)
-        self.src = gr.vector_source_b(self.data.tolist(), True)
+        self.src = blocks.vector_source_b(self.data.tolist(), True)
         self.mod = digital.dqpsk_mod(self.gray_code,
                                      samples_per_symbol=self.sps,
                                      excess_bw=self.excess_bw,
diff --git a/gr-qtgui/examples/pyqt_time_raster_b.py b/gr-qtgui/examples/pyqt_time_raster_b.py
index b29403819d..4cad9de601 100755
--- a/gr-qtgui/examples/pyqt_time_raster_b.py
+++ b/gr-qtgui/examples/pyqt_time_raster_b.py
@@ -22,6 +22,7 @@
 
 from gnuradio import gr
 from gnuradio import blocks
+from gnuradio import blocks
 import sys
 
 try:
@@ -58,10 +59,10 @@ class my_top_block(gr.top_block):
         nrows = 100
 
         fs = 200
-        src0 = gr.vector_source_b(data0, True)
-        src1 = gr.vector_source_b(data1, True)
+        src0 = blocks.vector_source_b(data0, True)
+        src1 = blocks.vector_source_b(data1, True)
         thr  = blocks.throttle(gr.sizeof_char, 50000)
-        head = gr.head(gr.sizeof_char, 10000000)
+        head = blocks.head(gr.sizeof_char, 10000000)
         self.snk1 = qtgui.time_raster_sink_b(fs, nrows, ncols, [], [],
                                              "Time Raster Example", 2)
 
diff --git a/gr-qtgui/examples/pyqt_time_raster_f.py b/gr-qtgui/examples/pyqt_time_raster_f.py
index 957e694b38..c5261520db 100755
--- a/gr-qtgui/examples/pyqt_time_raster_f.py
+++ b/gr-qtgui/examples/pyqt_time_raster_f.py
@@ -58,10 +58,10 @@ class my_top_block(gr.top_block):
         nrows = 100
 
         fs = 200
-        src0 = gr.vector_source_f(data0, True)
-        src1 = gr.vector_source_f(data1, True)
+        src0 = blocks.vector_source_f(data0, True)
+        src1 = blocks.vector_source_f(data1, True)
         thr = blocks.throttle(gr.sizeof_float, 50000)
-        hed = gr.head(gr.sizeof_float, 10000000)
+        hed = blocks.head(gr.sizeof_float, 10000000)
         self.snk1 = qtgui.time_raster_sink_f(fs, nrows, ncols, [], [],
                                              "Float Time Raster Example", 2)
 
diff --git a/gr-shd/apps/shd_rx_cfile b/gr-shd/apps/shd_rx_cfile
index ceae858343..37eec05e0e 100755
--- a/gr-shd/apps/shd_rx_cfile
+++ b/gr-shd/apps/shd_rx_cfile
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2011 Free Software Foundation, Inc.
+# Copyright 2011,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -82,10 +82,10 @@ class rx_cfile_block(gr.top_block):
             self.connect(self._src, self._sink)
         else:
             if options.output_shorts:
-                self._head = gr.head(gr.sizeof_short*2,
+                self._head = blocks.head(gr.sizeof_short*2,
                                      int(options.nsamples))
             else:
-                self._head = gr.head(gr.sizeof_gr_complex,
+                self._head = blocks.head(gr.sizeof_gr_complex,
                                      int(options.nsamples))
 
             self.connect(self._src, self._head, self._sink)
diff --git a/gr-trellis/doc/gr-trellis.xml b/gr-trellis/doc/gr-trellis.xml
index 42bd54b32c..a835a2543a 100644
--- a/gr-trellis/doc/gr-trellis.xml
+++ b/gr-trellis/doc/gr-trellis.xml
@@ -571,7 +571,7 @@ and an initial state (which is set to 0 in this example).
 <programlisting>
  15      # TX
  16      src = gr.lfsr_32k_source_s()
- 17      src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+ 17      src_head = blocks.head (gr.sizeof_short,Kb/16) # packet size in shorts
  18      s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the FSM input cardinality
  19      enc = trellis.encoder_ss(f,0) # initial state = 0
 </programlisting>
@@ -803,7 +803,7 @@ L being the channel length. This is sufficient to drive the initial and final st
  22      for i in range(L): # first/last L symbols set to 0
  23          packet[i] = 0
  24          packet[len(packet)-i-1] = 0
- 25      src = gr.vector_source_s(packet,False)
+ 25      src = blocks.vector_source_s(packet,False)
  26      mod = digital.chunks_to_symbols_sf(modulation[1],modulation[0])
 </programlisting>
 
@@ -826,11 +826,11 @@ Also note that the first L observations are irrelevant and thus can be skipped.
 </para>
 <programlisting>
  33      # RX
- 34      skip = gr.skiphead(gr.sizeof_float, L) # skip the first L samples since you know they are coming from the L zero symbols
+ 34      skip = blocks.skiphead(gr.sizeof_float, L) # skip the first L samples since you know they are coming from the L zero symbols
  35      #metrics = trellis.metrics_f(f.O(),dimensionality,tot_constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi
  36      #va = trellis.viterbi_s(f,K+L,0,0) # Put -1 if the Initial/Final states are not set.
  37      va = trellis.viterbi_combined_s(f,K+L,0,0,dimensionality,tot_constellation,trellis.TRELLIS_EUCLIDEAN) # using viterbi_combined_s instead of metrics_f/viterbi_s allows larger packet lengths because metrics_f is complaining for not being able to allocate large buffers. This is due to the large f.O() in this application...
- 38      dst = gr.vector_sink_s()
+ 38      dst = blocks.vector_sink_s()
 </programlisting>
 
 <para>
diff --git a/gr-trellis/doc/test_tcm.py b/gr-trellis/doc/test_tcm.py
index aa84f55bee..6bfa083ae2 100644
--- a/gr-trellis/doc/test_tcm.py
+++ b/gr-trellis/doc/test_tcm.py
@@ -20,7 +20,7 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed):
 
     # TX
     src = gr.lfsr_32k_source_s()
-    src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+    src_head = blocks.head (gr.sizeof_short,Kb/16) # packet size in shorts
     s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the FSM input cardinality
     enc = trellis.encoder_ss(f,0) # initial state = 0
     mod = digital.chunks_to_symbols_sf(constellation,dimensionality)
diff --git a/gr-trellis/doc/test_tcm.py.xml b/gr-trellis/doc/test_tcm.py.xml
index 96a8042ff7..c66363098b 100644
--- a/gr-trellis/doc/test_tcm.py.xml
+++ b/gr-trellis/doc/test_tcm.py.xml
@@ -16,7 +16,7 @@
  14
  15      # TX
  16      src = gr.lfsr_32k_source_s()
- 17      src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+ 17      src_head = blocks.head (gr.sizeof_short,Kb/16) # packet size in shorts
  18      s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the FSM input cardinality
  19      enc = trellis.encoder_ss(f,0) # initial state = 0
  20      mod = digital.chunks_to_symbols_sf(constellation,dimensionality)
diff --git a/gr-trellis/doc/test_viterbi_equalization1.py b/gr-trellis/doc/test_viterbi_equalization1.py
index d53e2b3304..c1a831d0bb 100755
--- a/gr-trellis/doc/test_viterbi_equalization1.py
+++ b/gr-trellis/doc/test_viterbi_equalization1.py
@@ -28,7 +28,7 @@ def run_test (f,Kb,bitspersymbol,K,channel,modulation,dimensionality,tot_constel
     for i in range(L): # first/last L symbols set to 0
         packet[i] = 0
         packet[len(packet)-i-1] = 0
-    src = gr.vector_source_s(packet,False)
+    src = blocks.vector_source_s(packet,False)
     mod = digital.chunks_to_symbols_sf(modulation[1],modulation[0])
 
     # CHANNEL
@@ -37,11 +37,11 @@ def run_test (f,Kb,bitspersymbol,K,channel,modulation,dimensionality,tot_constel
     noise = analog.noise_source_f(analog.GR_GAUSSIAN,math.sqrt(N0/2),seed)
 
     # RX
-    skip = gr.skiphead(gr.sizeof_float, L) # skip the first L samples since you know they are coming from the L zero symbols
+    skip = blocks.skiphead(gr.sizeof_float, L) # skip the first L samples since you know they are coming from the L zero symbols
     #metrics = trellis.metrics_f(f.O(),dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi
     #va = trellis.viterbi_s(f,K+L,0,0) # Put -1 if the Initial/Final states are not set.
     va = trellis.viterbi_combined_s(f,K+L,0,0,dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # using viterbi_combined_s instead of metrics_f/viterbi_s allows larger packet lengths because metrics_f is complaining for not being able to allocate large buffers. This is due to the large f.O() in this application...
-    dst = gr.vector_sink_s()
+    dst = blocks.vector_sink_s()
 
     tb.connect (src,mod)
     tb.connect (mod,isi,(add,0))
diff --git a/gr-trellis/doc/test_viterbi_equalization1.py.xml b/gr-trellis/doc/test_viterbi_equalization1.py.xml
index 5aca46ab35..9179f4f156 100644
--- a/gr-trellis/doc/test_viterbi_equalization1.py.xml
+++ b/gr-trellis/doc/test_viterbi_equalization1.py.xml
@@ -24,7 +24,7 @@
  22      for i in range(L): # first/last L symbols set to 0
  23          packet[i] = 0
  24          packet[len(packet)-i-1] = 0
- 25      src = gr.vector_source_s(packet,False)
+ 25      src = blocks.vector_source_s(packet,False)
  26      mod = digital.chunks_to_symbols_sf(modulation[1],modulation[0])
  27
  28      # CHANNEL
@@ -33,11 +33,11 @@
  31      noise = analog.noise_source_f(analog.GR_GAUSSIAN,math.sqrt(N0/2),seed)
  32
  33      # RX
- 34      skip = gr.skiphead(gr.sizeof_float, L) # skip the first L samples since you know they are coming from the L zero symbols
+ 34      skip = blocks.skiphead(gr.sizeof_float, L) # skip the first L samples since you know they are coming from the L zero symbols
  35      #metrics = trellis.metrics_f(f.O(),dimensionality,tot_constellation,trellis.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi
  36      #va = trellis.viterbi_s(f,K+L,0,0) # Put -1 if the Initial/Final states are not set.
  37      va = trellis.viterbi_combined_s(f,K+L,0,0,dimensionality,tot_constellation,trellis.TRELLIS_EUCLIDEAN) # using viterbi_combined_s instead of metrics_f/viterbi_s allows larger packet lengths because metrics_f is complaining for not being able to allocate large buffers. This is due to the large f.O() in this application...
- 38      dst = gr.vector_sink_s()
+ 38      dst = blocks.vector_sink_s()
  39
  40      tb.connect (src,mod)
  41      tb.connect (mod,isi,(add,0))
diff --git a/gr-trellis/examples/python/test_cpm.py b/gr-trellis/examples/python/test_cpm.py
index 8d1e2024c1..99b75a7dd1 100755
--- a/gr-trellis/examples/python/test_cpm.py
+++ b/gr-trellis/examples/python/test_cpm.py
@@ -93,7 +93,7 @@ def run_test(seed,blocksize):
 	##################################################
 	# Blocks
 	##################################################
-	random_source_x_0 = gr.vector_source_b(data.tolist(), False)
+	random_source_x_0 = blocks.vector_source_b(data.tolist(), False)
 	digital_chunks_to_symbols_xx_0 = digital.chunks_to_symbols_bf((-1, 1), 1)
 	filter_interp_fir_filter_xxx_0 = filter.interp_fir_filter_fff(Q, p)
 	analog_frequency_modulator_fc_0 = analog.frequency_modulator_fc(2*math.pi*h*(1.0/Q))
@@ -107,11 +107,11 @@ def run_test(seed,blocksize):
 	filter_fir_filter_xxx_0_0 = filter.fir_filter_ccc(Q, MF[0].conjugate())
 	filter_fir_filter_xxx_0_0_0 = filter.fir_filter_ccc(Q, MF[1].conjugate())
 	blocks_streams_to_stream_0 = blocks.streams_to_stream(gr.sizeof_gr_complex*1, int(N))
-	gr_skiphead_0 = gr.skiphead(gr.sizeof_gr_complex*1, int(N*(1+0)))
+	blocks_skiphead_0 = blocks.skiphead(gr.sizeof_gr_complex*1, int(N*(1+0)))
 	viterbi = trellis.viterbi_combined_cb(f, head+blocksize+tail, 0, -1, int(N),
 					      constellation, digital.TRELLIS_EUCLIDEAN)
 
-        gr_vector_sink_x_0 = gr.vector_sink_b()
+        blocks_vector_sink_x_0 = blocks.vector_sink_b()
 
 	##################################################
 	# Connections
@@ -127,13 +127,13 @@ def run_test(seed,blocksize):
 	tb.connect((blocks_multiply_vxx_0, 0), (filter_fir_filter_xxx_0_0_0, 0))
 	tb.connect((filter_fir_filter_xxx_0_0, 0), (blocks_streams_to_stream_0, 0))
 	tb.connect((filter_fir_filter_xxx_0_0_0, 0), (blocks_streams_to_stream_0, 1))
-	tb.connect((blocks_streams_to_stream_0, 0), (gr_skiphead_0, 0))
-	tb.connect((gr_skiphead_0, 0), (viterbi, 0))
-	tb.connect((viterbi, 0), (gr_vector_sink_x_0, 0))
+	tb.connect((blocks_streams_to_stream_0, 0), (blocks_skiphead_0, 0))
+	tb.connect((blocks_skiphead_0, 0), (viterbi, 0))
+	tb.connect((viterbi, 0), (blocks_vector_sink_x_0, 0))
 
 
         tb.run()
-        dataest = gr_vector_sink_x_0.data()
+        dataest = blocks_vector_sink_x_0.data()
         #print data
         #print numpy.array(dataest)
         perr = 0
diff --git a/gr-trellis/examples/python/test_pccc_turbo1.py b/gr-trellis/examples/python/test_pccc_turbo1.py
index bb596f1818..8234726be0 100755
--- a/gr-trellis/examples/python/test_pccc_turbo1.py
+++ b/gr-trellis/examples/python/test_pccc_turbo1.py
@@ -20,11 +20,11 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation,
 
     # TX
     src = gr.lfsr_32k_source_s()
-    src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+    src_head = blocks.head (gr.sizeof_short,Kb/16) # packet size in shorts
     s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the outer FSM input cardinality
-    #src = gr.vector_source_s([0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],False)
+    #src = blocks.vector_source_s([0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1],False)
     enc = trellis.pccc_encoder_ss(fo,0,fi,0,interleaver,K)
-    code = gr.vector_sink_s()
+    code = blocks.vector_sink_s()
     mod = digital.chunks_to_symbols_sf(constellation,dimensionality)
 
     # CHANNEL
diff --git a/gr-trellis/examples/python/test_sccc_hard.py b/gr-trellis/examples/python/test_sccc_hard.py
index ec1fdd1bc5..6cb85111a3 100755
--- a/gr-trellis/examples/python/test_sccc_hard.py
+++ b/gr-trellis/examples/python/test_sccc_hard.py
@@ -20,7 +20,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation,
 
     # TX
     src = gr.lfsr_32k_source_s()
-    src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+    src_head = blocks.head(gr.sizeof_short,Kb/16) # packet size in shorts
     s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the outer FSM input cardinality
     enc_out = trellis.encoder_ss(fo,0) # initial state = 0
     inter = trellis.permutation(interleaver.K(),interleaver.INTER(),1,gr.sizeof_short)
diff --git a/gr-trellis/examples/python/test_sccc_soft.py b/gr-trellis/examples/python/test_sccc_soft.py
index f663c9befd..782d2f9134 100755
--- a/gr-trellis/examples/python/test_sccc_soft.py
+++ b/gr-trellis/examples/python/test_sccc_soft.py
@@ -20,7 +20,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation,
 
     # TX
     src = gr.lfsr_32k_source_s()
-    src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+    src_head = blocks.head (gr.sizeof_short,Kb/16) # packet size in shorts
     s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the outer FSM input cardinality
     enc_out = trellis.encoder_ss(fo,0) # initial state = 0
     inter = trellis.permutation(interleaver.K(),interleaver.INTER(),1,gr.sizeof_short)
@@ -33,7 +33,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation,
 
     # RX
     metrics_in = trellis.metrics_f(fi.O(),dimensionality,constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner Viterbi
-    gnd = gr.vector_source_f([0],True);
+    gnd = blocks.vector_source_f([0],True);
     siso_in = trellis.siso_f(fi,K,0,-1,True,False,trellis.TRELLIS_MIN_SUM) # Put -1 if the Initial/Final states are not set.
     deinter = trellis.permutation(interleaver.K(),interleaver.DEINTER(),fi.I(),gr.sizeof_float)
     va_out = trellis.viterbi_s(fo,K,0,-1) # Put -1 if the Initial/Final states are not set.
diff --git a/gr-trellis/examples/python/test_sccc_turbo.py b/gr-trellis/examples/python/test_sccc_turbo.py
index cd974e9941..2a1e742a3b 100755
--- a/gr-trellis/examples/python/test_sccc_turbo.py
+++ b/gr-trellis/examples/python/test_sccc_turbo.py
@@ -17,7 +17,7 @@ except ImportError:
 def make_rx(tb,fo,fi,dimensionality,constellation,K,interleaver,IT,Es,N0,type):
     metrics_in = trellis.metrics_f(fi.O(),dimensionality,constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner Viterbi
     scale = blocks.multiply_const_ff(1.0/N0)
-    gnd = gr.vector_source_f([0],True);
+    gnd = blocks.vector_source_f([0],True);
 
     inter=[]
     deinter=[]
@@ -60,7 +60,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation,
 
     # TX
     src = gr.lfsr_32k_source_s()
-    src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+    src_head = blocks.head(gr.sizeof_short,Kb/16) # packet size in shorts
     s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the outer FSM input cardinality
     enc_out = trellis.encoder_ss(fo,0) # initial state = 0
     inter = trellis.permutation(interleaver.K(),interleaver.INTER(),1,gr.sizeof_short)
diff --git a/gr-trellis/examples/python/test_sccc_turbo1.py b/gr-trellis/examples/python/test_sccc_turbo1.py
index 93833ec7df..6c5a01d681 100755
--- a/gr-trellis/examples/python/test_sccc_turbo1.py
+++ b/gr-trellis/examples/python/test_sccc_turbo1.py
@@ -19,7 +19,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation,
 
     # TX
     src = gr.lfsr_32k_source_s()
-    src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+    src_head = blocks.head(gr.sizeof_short,Kb/16) # packet size in shorts
     s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the outer FSM input cardinality
     enc = trellis.sccc_encoder_ss(fo,0,fi,0,interleaver,K)
     mod = digital.chunks_to_symbols_sf(constellation,dimensionality)
diff --git a/gr-trellis/examples/python/test_sccc_turbo2.py b/gr-trellis/examples/python/test_sccc_turbo2.py
index 116a2ca6b2..40b8e03260 100755
--- a/gr-trellis/examples/python/test_sccc_turbo2.py
+++ b/gr-trellis/examples/python/test_sccc_turbo2.py
@@ -19,7 +19,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,constellation,
 
     # TX
     src = gr.lfsr_32k_source_s()
-    src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+    src_head = blocks.head(gr.sizeof_short,Kb/16) # packet size in shorts
     s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the outer FSM input cardinality
     enc = trellis.sccc_encoder_ss(fo,0,fi,0,interleaver,K)
     mod = digital.chunks_to_symbols_sf(constellation,dimensionality)
diff --git a/gr-trellis/examples/python/test_tcm.py b/gr-trellis/examples/python/test_tcm.py
index 8a815ae12a..79e2958842 100755
--- a/gr-trellis/examples/python/test_tcm.py
+++ b/gr-trellis/examples/python/test_tcm.py
@@ -24,9 +24,9 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed):
     #packet = [0]*Kb
     #for i in range(Kb-1*16): # last 16 bits = 0 to drive the final state to 0
         #packet[i] = random.randint(0, 1) # random 0s and 1s
-    #src = gr.vector_source_s(packet,False)
+    #src = blocks.vector_source_s(packet,False)
     src = gr.lfsr_32k_source_s()
-    src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+    src_head = blocks.head(gr.sizeof_short,Kb/16) # packet size in shorts
     #b2s = blocks.unpacked_to_packed_ss(1,gr.GR_MSB_FIRST) # pack bits in shorts
     s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the FSM input cardinality
     enc = trellis.encoder_ss(f,0) # initial state = 0
@@ -41,7 +41,7 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed):
     va = trellis.viterbi_s(f,K,0,-1) # Put -1 if the Initial/Final states are not set.
     fsmi2s = blocks.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM input symbols to shorts
     #s2b = blocks.packed_to_unpacked_ss(1,gr.GR_MSB_FIRST) # unpack shorts to bits
-    #dst = gr.vector_sink_s();
+    #dst = blocks.vector_sink_s();
     dst = gr.check_lfsr_32k_s()
 
 
diff --git a/gr-trellis/examples/python/test_tcm_bit.py b/gr-trellis/examples/python/test_tcm_bit.py
index 6308df1d09..f921584ab9 100755
--- a/gr-trellis/examples/python/test_tcm_bit.py
+++ b/gr-trellis/examples/python/test_tcm_bit.py
@@ -24,9 +24,9 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed):
     # this for loop is TOO slow!!!
     for i in range(Kb-1*16): # last 16 bits = 0 to drive the final state to 0
         packet[i] = random.randint(0, 1) # random 0s and 1s
-    src = gr.vector_source_s(packet,False)
+    src = blocks.vector_source_s(packet,False)
     #src = gr.lfsr_32k_source_s()
-    #src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+    #src_head = blocks.head (gr.sizeof_short,Kb/16) # packet size in shorts
     b2s = blocks.unpacked_to_packed_ss(1,gr.GR_MSB_FIRST) # pack bits in shorts
     s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the FSM input cardinality
     enc = trellis.encoder_ss(f,0) # initial state = 0
@@ -43,7 +43,7 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed):
     va = trellis.viterbi_s(f,K,0,-1) # Put -1 if the Initial/Final states are not set.
     fsmi2s = blocks.unpacked_to_packed_ss(bitspersymbol,gr.GR_MSB_FIRST) # pack FSM input symbols to shorts
     s2b = blocks.packed_to_unpacked_ss(1,gr.GR_MSB_FIRST) # unpack shorts to bits
-    dst = gr.vector_sink_s();
+    dst = blocks.vector_sink_s();
     #dst = gr.check_lfsr_32k_s();
 
 
diff --git a/gr-trellis/examples/python/test_tcm_combined.py b/gr-trellis/examples/python/test_tcm_combined.py
index 198d038ce3..5bce13899b 100755
--- a/gr-trellis/examples/python/test_tcm_combined.py
+++ b/gr-trellis/examples/python/test_tcm_combined.py
@@ -20,7 +20,7 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed):
 
     # TX
     src = gr.lfsr_32k_source_s()
-    src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+    src_head = blocks.head(gr.sizeof_short,Kb/16) # packet size in shorts
     s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the FSM input cardinality
     enc = trellis.encoder_ss(f,0) # initial state = 0
     mod = digital.chunks_to_symbols_sf(constellation,dimensionality)
diff --git a/gr-trellis/examples/python/test_tcm_parallel.py b/gr-trellis/examples/python/test_tcm_parallel.py
index d2527956e9..f87b12c444 100755
--- a/gr-trellis/examples/python/test_tcm_parallel.py
+++ b/gr-trellis/examples/python/test_tcm_parallel.py
@@ -20,7 +20,7 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,constellation,N0,seed,P):
 
     # TX
     src = gr.lfsr_32k_source_s()
-    src_head = gr.head (gr.sizeof_short,Kb/16*P) # packet size in shorts
+    src_head = blocks.head(gr.sizeof_short,Kb/16*P) # packet size in shorts
     s2fsmi=blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the FSM input cardinality
     s2p = blocks.stream_to_streams(gr.sizeof_short,P) # serial to parallel
     enc = trellis.encoder_ss(f,0) # initiali state = 0
diff --git a/gr-trellis/examples/python/test_turbo_equalization.py b/gr-trellis/examples/python/test_turbo_equalization.py
index 41361fd3db..c82d8dcb41 100755
--- a/gr-trellis/examples/python/test_turbo_equalization.py
+++ b/gr-trellis/examples/python/test_turbo_equalization.py
@@ -16,7 +16,7 @@ except ImportError:
 def make_rx(tb,fo,fi,dimensionality,tot_constellation,K,interleaver,IT,Es,N0,type):
     metrics_in = trellis.metrics_f(fi.O(),dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner SISO
     scale = blocks.multiply_const_ff(1.0/N0)
-    gnd = gr.vector_source_f([0],True);
+    gnd = blocks.vector_source_f([0],True);
 
     inter=[]
     deinter=[]
@@ -58,7 +58,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,dimensionality,tot_constellat
 
     # TX
     src = gr.lfsr_32k_source_s()
-    src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+    src_head = blocks.head(gr.sizeof_short,Kb/16) # packet size in shorts
     s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the iouter FSM input cardinality
     enc_out = trellis.encoder_ss(fo,0) # initial state = 0
     inter = trellis.permutation(interleaver.K(),interleaver.INTER(),1,gr.sizeof_short)
diff --git a/gr-trellis/examples/python/test_turbo_equalization1.py b/gr-trellis/examples/python/test_turbo_equalization1.py
index ae7e3e374b..5ff21ec757 100755
--- a/gr-trellis/examples/python/test_turbo_equalization1.py
+++ b/gr-trellis/examples/python/test_turbo_equalization1.py
@@ -17,7 +17,7 @@ except ImportError:
 def make_rx(tb,fo,fi,dimensionality,tot_constellation,K,interleaver,IT,Es,N0,type):
     metrics_in = trellis.metrics_f(fi.O(),dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for innner SISO
     scale = blocks.multiply_const_ff(1.0/N0)
-    gnd = gr.vector_source_f([0],True);
+    gnd = blocks.vector_source_f([0],True);
 
     inter=[]
     deinter=[]
@@ -64,7 +64,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,channel,modulation,dimensiona
     random.seed(seed)
     for i in range(len(packet)):
         packet[i] = random.randint(0, 2**bitspersymbol - 1) # random symbols
-    src = gr.vector_source_s(packet,False)
+    src = blocks.vector_source_s(packet,False)
     enc_out = trellis.encoder_ss(fo,0) # initial state = 0
     inter = trellis.permutation(interleaver.K(),interleaver.INTER(),1,gr.sizeof_short)
     mod = digital.chunks_to_symbols_sf(modulation[1],modulation[0])
@@ -76,7 +76,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,channel,modulation,dimensiona
 
     # RX
     (head,tail) = make_rx(tb,fo,fi,dimensionality,tot_constellation,K,interleaver,IT,Es,N0,trellis.TRELLIS_MIN_SUM)
-    dst = gr.vector_sink_s();
+    dst = blocks.vector_sink_s();
 
     tb.connect (src,enc_out,inter,mod)
     tb.connect (mod,isi,(add,0))
diff --git a/gr-trellis/examples/python/test_turbo_equalization2.py b/gr-trellis/examples/python/test_turbo_equalization2.py
index eed5675fe5..c2af9fbfca 100755
--- a/gr-trellis/examples/python/test_turbo_equalization2.py
+++ b/gr-trellis/examples/python/test_turbo_equalization2.py
@@ -16,7 +16,7 @@ except ImportError:
 
 def make_rx(tb,fo,fi,dimensionality,tot_constellation,K,interleaver,IT,Es,N0,type):
     scale = blocks.multiply_const_ff(math.sqrt(1.0/N0))
-    gnd = gr.vector_source_f([0],True);
+    gnd = blocks.vector_source_f([0],True);
 
     inter=[]
     deinter=[]
@@ -62,7 +62,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,channel,modulation,dimensiona
     random.seed(seed)
     for i in range(len(packet)):
         packet[i] = random.randint(0, 2**bitspersymbol - 1) # random symbols
-    src = gr.vector_source_s(packet,False)
+    src = blocks.vector_source_s(packet,False)
     enc_out = trellis.encoder_ss(fo,0) # initial state = 0
     inter = trellis.permutation(interleaver.K(),interleaver.INTER(),1,gr.sizeof_short)
     mod = digital.chunks_to_symbols_sf(modulation[1],modulation[0])
@@ -74,7 +74,7 @@ def run_test (fo,fi,interleaver,Kb,bitspersymbol,K,channel,modulation,dimensiona
 
     # RX
     (head,tail) = make_rx(tb,fo,fi,dimensionality,tot_constellation,K,interleaver,IT,Es,N0,trellis.TRELLIS_MIN_SUM)
-    dst = gr.vector_sink_s();
+    dst = blocks.vector_sink_s();
 
     tb.connect (src,enc_out,inter,mod)
     tb.connect (mod,isi,(add,0))
diff --git a/gr-trellis/examples/python/test_viterbi_equalization.py b/gr-trellis/examples/python/test_viterbi_equalization.py
index f83125136c..f1e61f90cb 100755
--- a/gr-trellis/examples/python/test_viterbi_equalization.py
+++ b/gr-trellis/examples/python/test_viterbi_equalization.py
@@ -18,7 +18,7 @@ def run_test (f,Kb,bitspersymbol,K,dimensionality,tot_constellation,N0,seed):
 
     # TX
     src = gr.lfsr_32k_source_s()
-    src_head = gr.head (gr.sizeof_short,Kb/16) # packet size in shorts
+    src_head = blocks.head (gr.sizeof_short,Kb/16) # packet size in shorts
     s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol,gr.GR_MSB_FIRST) # unpack shorts to symbols compatible with the FSM input cardinality
     enc = trellis.encoder_ss(f,0) # initial state = 0
     # essentially here we implement the combination of modulation and channel as a memoryless modulation (the memory induced by the channel is hidden in the FSM)
diff --git a/gr-trellis/examples/python/test_viterbi_equalization1.py b/gr-trellis/examples/python/test_viterbi_equalization1.py
index df46046ae3..baa6a27f1b 100755
--- a/gr-trellis/examples/python/test_viterbi_equalization1.py
+++ b/gr-trellis/examples/python/test_viterbi_equalization1.py
@@ -27,7 +27,7 @@ def run_test (f,Kb,bitspersymbol,K,channel,modulation,dimensionality,tot_constel
     for i in range(L): # first/last L symbols set to 0
         packet[i] = 0
         packet[len(packet)-i-1] = 0
-    src = gr.vector_source_s(packet,False)
+    src = blocks.vector_source_s(packet,False)
     mod = digital.chunks_to_symbols_sf(modulation[1],modulation[0])
 
     # CHANNEL
@@ -36,11 +36,11 @@ def run_test (f,Kb,bitspersymbol,K,channel,modulation,dimensionality,tot_constel
     noise = analog.noise_source_f(analog.GR_GAUSSIAN,math.sqrt(N0/2),seed)
 
     # RX
-    skip = gr.skiphead(gr.sizeof_float, L) # skip the first L samples since you know they are coming from the L zero symbols
+    skip = blocks.skiphead(gr.sizeof_float, L) # skip the first L samples since you know they are coming from the L zero symbols
     #metrics = trellis.metrics_f(f.O(),dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # data preprocessing to generate metrics for Viterbi
     #va = trellis.viterbi_s(f,K+L,-1,0) # Put -1 if the Initial/Final states are not set.
     va = trellis.viterbi_combined_fs(f,K+L,0,0,dimensionality,tot_constellation,digital.TRELLIS_EUCLIDEAN) # using viterbi_combined_fs instead of metrics_f/viterbi_s allows larger packet lengths because metrics_f is complaining for not being able to allocate large buffers. This is due to the large f.O() in this application...
-    dst = gr.vector_sink_s()
+    dst = blocks.vector_sink_s()
 
     tb.connect (src,mod)
     tb.connect (mod,isi,(add,0))
diff --git a/gr-trellis/python/qa_trellis.py b/gr-trellis/python/qa_trellis.py
index 983a749af6..07097f906c 100755
--- a/gr-trellis/python/qa_trellis.py
+++ b/gr-trellis/python/qa_trellis.py
@@ -108,7 +108,7 @@ class trellis_tb(gr.top_block):
         # TX
         src = gr.lfsr_32k_source_s()
         # packet size in shorts
-        src_head = gr.head (gr.sizeof_short, packet_size/16)
+        src_head = blocks.head(gr.sizeof_short, packet_size/16)
         # unpack shorts to symbols compatible with the FSM input cardinality
         s2fsmi = blocks.packed_to_unpacked_ss(bitspersymbol, gr.GR_MSB_FIRST)
         # initial FSM state = 0
diff --git a/gr-uhd/apps/uhd_rx_cfile b/gr-uhd/apps/uhd_rx_cfile
index f9ed392564..5531bb35b8 100755
--- a/gr-uhd/apps/uhd_rx_cfile
+++ b/gr-uhd/apps/uhd_rx_cfile
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -83,9 +83,9 @@ class rx_cfile_block(gr.top_block):
             self.connect(self._u, self._sink)
         else:
             if options.output_shorts:
-                self._head = gr.head(gr.sizeof_short*2, int(options.nsamples))
+                self._head = blocks.head(gr.sizeof_short*2, int(options.nsamples))
             else:
-                self._head = gr.head(gr.sizeof_gr_complex, int(options.nsamples))
+                self._head = blocks.head(gr.sizeof_gr_complex, int(options.nsamples))
 
             self.connect(self._u, self._head, self._sink)
 
diff --git a/gr-uhd/examples/grc/uhd_rx_dpsk.grc b/gr-uhd/examples/grc/uhd_rx_dpsk.grc
index 73848ff3cd..b40c541629 100644
--- a/gr-uhd/examples/grc/uhd_rx_dpsk.grc
+++ b/gr-uhd/examples/grc/uhd_rx_dpsk.grc
@@ -310,10 +310,10 @@
     </param>
   </block>
   <block>
-    <key>gr_null_sink</key>
+    <key>blocks_null_sink</key>
     <param>
       <key>id</key>
-      <value>gr_null_sink_0</value>
+      <value>blocks_null_sink_0</value>
     </param>
     <param>
       <key>_enabled</key>
@@ -1406,7 +1406,7 @@
   </block>
   <connection>
     <source_block_id>digital_dxpsk_demod_0</source_block_id>
-    <sink_block_id>gr_null_sink_0</sink_block_id>
+    <sink_block_id>blocks_null_sink_0</sink_block_id>
     <source_key>0</source_key>
     <sink_key>0</sink_key>
   </connection>
diff --git a/gr-uhd/examples/python/max_power.py b/gr-uhd/examples/python/max_power.py
index 79fe120641..e1504e5ea2 100755
--- a/gr-uhd/examples/python/max_power.py
+++ b/gr-uhd/examples/python/max_power.py
@@ -27,6 +27,7 @@ Setup USRP for maximum power consumption.
 
 from gnuradio import gr
 from gnuradio import analog
+from gnuradio import blocks
 from gnuradio import uhd
 from gnuradio.eng_option import eng_option
 from optparse import OptionParser
@@ -95,7 +96,7 @@ class build_block(gr.top_block):
             self.u_rx = uhd.usrp_source(device_addr=args,
                                         io_type=uhd.io_type.COMPLEX_FLOAT32,
                                         num_channels=rx_nchan)
-            self.rx_dst0 = gr.null_sink(gr.sizeof_gr_complex)
+            self.rx_dst0 = blocks.null_sink(gr.sizeof_gr_complex)
 
             self.u_rx.set_samp_rate(MAX_RATE)
 
diff --git a/gr-uhd/examples/python/usrp_tv_rcv.py b/gr-uhd/examples/python/usrp_tv_rcv.py
index d94b651660..301840f41d 100755
--- a/gr-uhd/examples/python/usrp_tv_rcv.py
+++ b/gr-uhd/examples/python/usrp_tv_rcv.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2005-2007,2011,2012 Free Software Foundation, Inc.
+# Copyright 2005-2007,2011-2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -226,7 +226,7 @@ class tv_rx_block (stdgui2.std_top_block):
         elif process_type=='do_nullsink':
           #self.connect (self.src, self.am_demod,self.invert_and_scale,f2uc,video_sink)
           c2r=blocks.complex_to_real()
-          nullsink=gr.null_sink(gr.sizeof_float)
+          nullsink=blocks.null_sink(gr.sizeof_float)
           self.connect (self.src, c2r,nullsink) #video_sink)
         elif process_type=='do_tv_sync_corr':
           frame_size=width*height #int(usrp_rate/25.0)
diff --git a/gr-uhd/examples/python/usrp_tv_rcv_nogui.py b/gr-uhd/examples/python/usrp_tv_rcv_nogui.py
index 13395cef46..80e2e1c17a 100755
--- a/gr-uhd/examples/python/usrp_tv_rcv_nogui.py
+++ b/gr-uhd/examples/python/usrp_tv_rcv_nogui.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2005-2007,2011 Free Software Foundation, Inc.
+# Copyright 2005-2007,2011,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -202,7 +202,7 @@ class my_top_block(gr.top_block):
         if options.nframes is None:
             self.connect(self.src, self.agc)
         else:
-            self.head = gr.head(gr.sizeof_gr_complex, int(options.nframes*width*height))
+            self.head = blocks.head(gr.sizeof_gr_complex, int(options.nframes*width*height))
             self.connect(self.src, self.head, self.agc)
 
         self.connect (self.agc, self.am_demod, self.invert_and_scale,
diff --git a/gr-vocoder/python/qa_alaw_vocoder.py b/gr-vocoder/python/qa_alaw_vocoder.py
index a8d65409e5..50b5f8844a 100755
--- a/gr-vocoder/python/qa_alaw_vocoder.py
+++ b/gr-vocoder/python/qa_alaw_vocoder.py
@@ -21,7 +21,8 @@
 #
 
 from gnuradio import gr, gr_unittest
-from vocoder_swig import *
+import vocoder_swig as vocoder
+import blocks_swig as blocks
 
 class test_alaw_vocoder (gr_unittest.TestCase):
 
@@ -34,10 +35,10 @@ class test_alaw_vocoder (gr_unittest.TestCase):
     def test001_module_load (self):
         data = (8,24,40,56,72,88,104,120,136,152,168,184,
                 200,216,232,248,264,280,296,312,328,344)
-        src = gr.vector_source_s(data)
-        enc = alaw_encode_sb()
-        dec = alaw_decode_bs()
-        snk = gr.vector_sink_s()
+        src = blocks.vector_source_s(data)
+        enc = vocoder.alaw_encode_sb()
+        dec = vocoder.alaw_decode_bs()
+        snk = blocks.vector_sink_s()
         self.tb.connect(src, enc, dec, snk)
         self.tb.run()
         actual_result = snk.data()
diff --git a/gr-vocoder/python/qa_codec2_vocoder.py b/gr-vocoder/python/qa_codec2_vocoder.py
index 7f38904459..83dbc2eb87 100755
--- a/gr-vocoder/python/qa_codec2_vocoder.py
+++ b/gr-vocoder/python/qa_codec2_vocoder.py
@@ -21,7 +21,8 @@
 #
 
 from gnuradio import gr, gr_unittest
-from vocoder_swig import *
+import vocoder_swig as vocoder
+import blocks_swig as blocks
 
 class test_codec2_vocoder (gr_unittest.TestCase):
 
@@ -45,10 +46,10 @@ class test_codec2_vocoder (gr_unittest.TestCase):
                          31,-82,-98,-51,6,93,104,44,-5,-84,-107,-44,45,102,104,
                          15,-47,-107,-126,-87,-11,89,93,13,-95,-136,-187,-70,
                          -167,216,-70,-103,175,-284,-486)
-        src = gr.vector_source_s(data)
-        enc = codec2_encode_sp()
-        dec = codec2_decode_ps()
-        snk = gr.vector_sink_s()
+        src = blocks.vector_source_s(data)
+        enc = vocoder.codec2_encode_sp()
+        dec = vocoder.codec2_decode_ps()
+        snk = blocks.vector_sink_s()
         self.tb.connect(src, enc, dec, snk)
         self.tb.run()
         actual_result = snk.data()
diff --git a/gr-vocoder/python/qa_cvsd_vocoder.py b/gr-vocoder/python/qa_cvsd_vocoder.py
index 42cb7f19b9..548c877526 100755
--- a/gr-vocoder/python/qa_cvsd_vocoder.py
+++ b/gr-vocoder/python/qa_cvsd_vocoder.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2007,2010,2011 Free Software Foundation, Inc.
+# Copyright 2007,2010,2011,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -21,8 +21,8 @@
 #
 
 from gnuradio import gr, gr_unittest
-from vocoder_swig import *
-from cvsd import *
+import vocoder_swig as vocoder
+import cvsd
 import blocks_swig as blocks
 import filter_swig as filter
 
@@ -35,10 +35,10 @@ class test_cvsd_vocoder (gr_unittest.TestCase):
         self.tb = None
 
     def test001_module_load (self):
-        raw_enc = cvsd_encode_sb()
-        raw_dec = cvsd_decode_bs()
-        hb_enc = cvsd_encode_fb()
-        hb_dec = cvsd_decode_bf()
+        raw_enc = vocoder.cvsd_encode_sb()
+        raw_dec = vocoder.cvsd_decode_bs()
+        hb_enc = cvsd.cvsd_encode_fb()
+        hb_dec = cvsd.cvsd_decode_bf()
 
 
     """ Disable for now
@@ -100,20 +100,20 @@ class test_cvsd_vocoder (gr_unittest.TestCase):
         # WARNING: not importing analog in this QA code.
         # If we enable this, we can probably just create a sin with numpy.
         src = analog.sig_source_f(sample_rate, analog.GR_SIN_WAVE, 200, 1, 0)
-        head = gr.head(gr.sizeof_float, 100)
+        head = blocks.head(gr.sizeof_float, 100)
         src_scale = blocks.multiply_const_ff(scale_factor)
 
         interp = filter.rational_resampler_fff(8, 1)
         f2s = blocks.float_to_short()
 
-        enc = cvsd_vocoder.encode_sb()
-        dec = cvsd_vocoder.decode_bs()
+        enc = vocoder.cvsd_vocoder.encode_sb()
+        dec = vocoder.cvsd_vocoder.decode_bs()
 
         s2f = blocks.short_to_float()
         decim = filter.rational_resampler_fff(1, 8)
 
         sink_scale = blocks.multiply_const_ff(1.0/scale_factor)
-        sink = gr.vector_sink_f()
+        sink = blocks.vector_sink_f()
 
         self.tb.connect(src, src_scale, interp, f2s, enc)
         self.tb.connect(enc, dec, s2f, decim, sink_scale, head, sink)
diff --git a/gr-vocoder/python/qa_g721_vocoder.py b/gr-vocoder/python/qa_g721_vocoder.py
index e6ac04e155..ed53771076 100755
--- a/gr-vocoder/python/qa_g721_vocoder.py
+++ b/gr-vocoder/python/qa_g721_vocoder.py
@@ -21,7 +21,8 @@
 #
 
 from gnuradio import gr, gr_unittest
-from vocoder_swig import *
+import vocoder_swig as vocoder
+import blocks_swig as blocks
 
 class test_g721_vocoder (gr_unittest.TestCase):
 
@@ -34,10 +35,10 @@ class test_g721_vocoder (gr_unittest.TestCase):
     def test001_module_load (self):
         data = (8,24,36,52,56,64,76,88,104,124,132,148,172,
                 196,220,244,280,320,372,416,468,524,580,648)
-        src = gr.vector_source_s(data)
-        enc = g721_encode_sb()
-        dec = g721_decode_bs()
-        snk = gr.vector_sink_s()
+        src = blocks.vector_source_s(data)
+        enc = vocoder.g721_encode_sb()
+        dec = vocoder.g721_decode_bs()
+        snk = blocks.vector_sink_s()
         self.tb.connect(src, enc, dec, snk)
         self.tb.run()
         actual_result = snk.data()
diff --git a/gr-vocoder/python/qa_g723_24_vocoder.py b/gr-vocoder/python/qa_g723_24_vocoder.py
index eda9ed86bd..f473e85677 100755
--- a/gr-vocoder/python/qa_g723_24_vocoder.py
+++ b/gr-vocoder/python/qa_g723_24_vocoder.py
@@ -21,7 +21,8 @@
 #
 
 from gnuradio import gr, gr_unittest
-from vocoder_swig import *
+import vocoder_swig as vocoder
+import blocks_swig as blocks
 
 class test_g723_24_vocoder (gr_unittest.TestCase):
 
@@ -33,10 +34,10 @@ class test_g723_24_vocoder (gr_unittest.TestCase):
 
     def test001_module_load (self):
         data = (0,16,36,40,68,104,148,220,320,512)
-        src = gr.vector_source_s(data)
-        enc = g723_24_encode_sb()
-        dec = g723_24_decode_bs()
-        snk = gr.vector_sink_s()
+        src = blocks.vector_source_s(data)
+        enc = vocoder.g723_24_encode_sb()
+        dec = vocoder.g723_24_decode_bs()
+        snk = blocks.vector_sink_s()
         self.tb.connect(src, enc, dec, snk)
         self.tb.run()
         actual_result = snk.data()
diff --git a/gr-vocoder/python/qa_g723_40_vocoder.py b/gr-vocoder/python/qa_g723_40_vocoder.py
index db6b7538f3..e7ca4587b7 100755
--- a/gr-vocoder/python/qa_g723_40_vocoder.py
+++ b/gr-vocoder/python/qa_g723_40_vocoder.py
@@ -21,7 +21,8 @@
 #
 
 from gnuradio import gr, gr_unittest
-from vocoder_swig import *
+import vocoder_swig as vocoder
+import blocks_swig as blocks
 
 class test_g723_40_vocoder (gr_unittest.TestCase):
 
@@ -33,10 +34,10 @@ class test_g723_40_vocoder (gr_unittest.TestCase):
 
     def test001_module_load (self):
         data = (0,8,36,72,100,152,228,316,404,528)
-        src = gr.vector_source_s(data)
-        enc = g723_40_encode_sb()
-        dec = g723_40_decode_bs()
-        snk = gr.vector_sink_s()
+        src = blocks.vector_source_s(data)
+        enc = vocoder.g723_40_encode_sb()
+        dec = vocoder.g723_40_decode_bs()
+        snk = blocks.vector_sink_s()
         self.tb.connect(src, enc, dec, snk)
         self.tb.run()
         actual_result = snk.data()
diff --git a/gr-vocoder/python/qa_gsm_full_rate.py b/gr-vocoder/python/qa_gsm_full_rate.py
index 4a7692ecd4..a62781ea94 100755
--- a/gr-vocoder/python/qa_gsm_full_rate.py
+++ b/gr-vocoder/python/qa_gsm_full_rate.py
@@ -21,7 +21,8 @@
 #
 
 from gnuradio import gr, gr_unittest
-import vocoder_swig
+import vocoder_swig as vocoder
+import blocks_swig as blocks
 
 class test_gsm_vocoder (gr_unittest.TestCase):
 
@@ -47,10 +48,10 @@ class test_gsm_vocoder (gr_unittest.TestCase):
                          680,600,240,168,112,408,488,472,608,480,240,232,
                          208,288,480,600,616,520,176,88,184,296,392,584,
                          656,552,248,160,144,336,432,512,608,664)
-        src = gr.vector_source_s(data)
-        enc = vocoder_swig.gsm_fr_encode_sp()
-        dec = vocoder_swig.gsm_fr_decode_ps()
-        snk = gr.vector_sink_s()
+        src = blocks.vector_source_s(data)
+        enc = vocoder.gsm_fr_encode_sp()
+        dec = vocoder.gsm_fr_decode_ps()
+        snk = blocks.vector_sink_s()
         self.tb.connect(src, enc, dec, snk)
         self.tb.run()
         actual_result = snk.data()
diff --git a/gr-vocoder/python/qa_ulaw_vocoder.py b/gr-vocoder/python/qa_ulaw_vocoder.py
index a87aae762c..a030e065cc 100755
--- a/gr-vocoder/python/qa_ulaw_vocoder.py
+++ b/gr-vocoder/python/qa_ulaw_vocoder.py
@@ -21,7 +21,8 @@
 #
 
 from gnuradio import gr, gr_unittest
-from vocoder_swig import *
+import vocoder_swig as vocoder
+import blocks_swig as blocks
 
 class test_ulaw_vocoder (gr_unittest.TestCase):
 
@@ -34,10 +35,10 @@ class test_ulaw_vocoder (gr_unittest.TestCase):
     def test001_module_load (self):
         data = (8,24,40,56,72,88,104,120,132,148,164,180,
                 196,212,228,244,260,276,292,308,324,340)
-        src = gr.vector_source_s(data)
-        enc = ulaw_encode_sb()
-        dec = ulaw_decode_bs()
-        snk = gr.vector_sink_s()
+        src = blocks.vector_source_s(data)
+        enc = vocoder.ulaw_encode_sb()
+        dec = vocoder.ulaw_decode_bs()
+        snk = blocks.vector_sink_s()
         self.tb.connect(src, enc, dec, snk)
         self.tb.run()
         actual_result = snk.data()
diff --git a/gr-wavelet/python/qa_classify.py b/gr-wavelet/python/qa_classify.py
index c2972c92f2..8dfc6ca5f9 100755
--- a/gr-wavelet/python/qa_classify.py
+++ b/gr-wavelet/python/qa_classify.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 #
-# Copyright 2008,2010 Free Software Foundation, Inc.
+# Copyright 2008,2010,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -51,8 +51,8 @@ class test_classify(gr_unittest.TestCase):
 #     def test_000_(self):
 #         src_data = numpy.zeros(10)
 #         trg_data = numpy.zeros(10)
-#         src = gr.vector_source_f(src_data)
-#         dst = gr.vector_sink_f()
+#         src = blocks.vector_source_f(src_data)
+#         dst = blocks.vector_sink_f()
 #         self.tb.connect(src, dst)
 #         self.tb.run()
 #         rsl_data = dst.data()
@@ -66,8 +66,8 @@ class test_classify(gr_unittest.TestCase):
     def test_001_(self):
         src_data = numpy.array([-1.0, 1.0, -1.0, 1.0])
         trg_data = src_data * 0.5
-        src = gr.vector_source_f(src_data)
-        dst = gr.vector_sink_f()
+        src = blocks.vector_source_f(src_data)
+        dst = blocks.vector_sink_f()
         rail = analog.rail_ff(-0.5, 0.5)
         self.tb.connect(src, rail)
         self.tb.connect(rail, dst)
@@ -88,9 +88,9 @@ class test_classify(gr_unittest.TestCase):
                                 -1.0/5.0])
         trg_data = copy.deepcopy(src_data)
 
-        src = gr.vector_source_f(src_data, False, len(src_data))
+        src = blocks.vector_source_f(src_data, False, len(src_data))
         st = blocks.stretch_ff(-1.0/5.0, len(src_data))
-        dst = gr.vector_sink_f(len(src_data))
+        dst = blocks.vector_sink_f(len(src_data))
         self.tb.connect(src, st)
         self.tb.connect(st, dst)
         self.tb.run()
@@ -107,9 +107,9 @@ class test_classify(gr_unittest.TestCase):
         trg_grid = copy.deepcopy(src_grid)
         src_data = (0.0, 1.0, 0.0, 1.0, 0.0)
 
-        src = gr.vector_source_f(src_data, False, len(src_grid))
+        src = blocks.vector_source_f(src_data, False, len(src_grid))
         sq = wavelet_swig.squash_ff(src_grid, trg_grid)
-        dst = gr.vector_sink_f(len(trg_grid))
+        dst = blocks.vector_sink_f(len(trg_grid))
         self.tb.connect(src, sq)
         self.tb.connect(sq, dst)
         self.tb.run()
@@ -133,10 +133,10 @@ class test_classify(gr_unittest.TestCase):
 #        c = w.transform_forward(b, ws)
 #        d = w.transform_inverse(c, ws)
 #
-#        src = gr.vector_source_f(b, False, n)
+#        src = blocks.vector_source_f(b, False, n)
 #        wv = wavelet_swig.wavelet_ff(n, o, True)
 #
-#        dst = gr.vector_sink_f(n)
+#        dst = blocks.vector_sink_f(n)
 #        self.tb.connect(src, wv)
 #        self.tb.connect(wv, dst)
 #        self.tb.run()
@@ -162,9 +162,9 @@ class test_classify(gr_unittest.TestCase):
             wvps[e] = scl*sqr(dwav[k:k+(01<<e)]).sum()
             k += 01<<e
 
-        src = gr.vector_source_f(src_data, False, len(src_data))
+        src = blocks.vector_source_f(src_data, False, len(src_data))
         kon = wavelet_swig.wvps_ff(len(src_data))
-        dst = gr.vector_sink_f(int(math.ceil(math.log(len(src_data), 2))))
+        dst = blocks.vector_sink_f(int(math.ceil(math.log(len(src_data), 2))))
 
         self.tb.connect(src, kon)
         self.tb.connect(kon, dst)
diff --git a/gr-wxgui/python/common.py b/gr-wxgui/python/common.py
index 57fc530f88..48a62a28ab 100644
--- a/gr-wxgui/python/common.py
+++ b/gr-wxgui/python/common.py
@@ -24,6 +24,7 @@
 ##################################################
 import wx
 from gnuradio import gr
+from gnuradio import blocks
 
 RUN_ALWAYS = gr.prefs().get_bool ('wxgui', 'run_always', False)
 
@@ -47,7 +48,7 @@ class wxgui_hb(object):
 		"""
 		try:
 			assert points[0] == self or points[0][0] == self
-			copy = gr.copy(self._hb.input_signature().sizeof_stream_item(0))
+			copy = blocks.copy(self._hb.input_signature().sizeof_stream_item(0))
 			handler = self._handler_factory(copy.set_enabled)
 			if RUN_ALWAYS == False:
 				handler(False) #initially disable the copy block
diff --git a/grc/blocks/block_tree.xml b/grc/blocks/block_tree.xml
index e9da1ec880..9614c6ae02 100644
--- a/grc/blocks/block_tree.xml
+++ b/grc/blocks/block_tree.xml
@@ -8,31 +8,19 @@
 	<name></name> <!-- Blank for Root Name -->
 	<cat>
 		<name>Sources</name>
-		<block>gr_vector_source_x</block>
 		<block>random_source_x</block>
-		<block>gr_null_source</block>
 		<block>blks2_tcp_source</block>
 		<block>pad_source</block>
 		<block>virtual_source</block>
 	</cat>
 	<cat>
 		<name>Sinks</name>
-		<block>gr_vector_sink_x</block>
-		<block>gr_null_sink</block>
 		<block>blks2_tcp_sink</block>
 		<block>pad_sink</block>
 		<block>virtual_sink</block>
 	</cat>
-	<cat>
-		<name>Operators</name>
-		<block>gr_vector_insert_x</block>
-                <block>gr_endian_swap</block>
-	</cat>
 	<cat>
 		<name>Synchronizers</name>
-
-		<block>gr_mpsk_sync_cc</block>
-
 		<block>blks2_packet_decoder</block>
 		<block>blks2_packet_encoder</block>
 	</cat>
@@ -58,13 +46,6 @@
 		<block>blks2_valve</block>
 		<block>blks2_error_rate</block>
 
-		<block>gr_head</block>
-		<block>gr_skiphead</block>
-
-		<block>gr_kludge_copy</block>
-		<block>gr_copy</block>
-		<block>gr_nop</block>
-
 		<block>xmlrpc_server</block>
 		<block>xmlrpc_client</block>
 	</cat>
diff --git a/grc/blocks/gr_copy.xml b/grc/blocks/gr_copy.xml
deleted file mode 100644
index 8b12eaca78..0000000000
--- a/grc/blocks/gr_copy.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Copy
-###################################################
- -->
-<block>
-	<name>Copy</name>
-	<key>gr_copy</key>
-	<import>from gnuradio import gr</import>
-	<make>gr.copy($type.size*$vlen)
-self.$(id).set_enabled($enabled)</make>
-	<callback>set_enabled($enabled)</callback>
-	<param>
-		<name>Type</name>
-		<key>type</key>
-		<type>enum</type>
-		<option>
-			<name>Complex</name>
-			<key>complex</key>
-			<opt>size:gr.sizeof_gr_complex</opt>
-		</option>
-		<option>
-			<name>Float</name>
-			<key>float</key>
-			<opt>size:gr.sizeof_float</opt>
-		</option>
-		<option>
-			<name>Int</name>
-			<key>int</key>
-			<opt>size:gr.sizeof_int</opt>
-		</option>
-		<option>
-			<name>Short</name>
-			<key>short</key>
-			<opt>size:gr.sizeof_short</opt>
-		</option>
-		<option>
-			<name>Byte</name>
-			<key>byte</key>
-			<opt>size:gr.sizeof_char</opt>
-		</option>
-	</param>
-	<param>
-		<name>Enabled</name>
-		<key>enabled</key>
-		<value>True</value>
-		<type>bool</type>
-		<option>
-			<name>Enabled</name>
-			<key>True</key>
-		</option>
-		<option>
-			<name>Disabled</name>
-			<key>False</key>
-		</option>
-	</param>
-	<param>
-		<name>Vec Length</name>
-		<key>vlen</key>
-		<value>1</value>
-		<type>int</type>
-	</param>
-	<check>$vlen &gt; 0</check>
-	<sink>
-		<name>in</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-	</source>
-</block>
diff --git a/grc/blocks/gr_endian_swap.xml b/grc/blocks/gr_endian_swap.xml
deleted file mode 100644
index aa564026cd..0000000000
--- a/grc/blocks/gr_endian_swap.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Add Block:
-##	all types, 1 output, 2 to inf inputs
-###################################################
- -->
-<block>
-	<name>Endian Swap</name>
-	<key>gr_endian_swap</key>
-	<import>from gnuradio import gr</import>
-	<make>gr.endian_swap($type.size)</make>
-	<param>
-		<name>IO Type</name>
-		<key>type</key>
-		<type>enum</type>
-		<option>
-			<name>Complex</name>
-			<key>complex</key>
-			<opt>size:8</opt>
-		</option>
-		<option>
-			<name>Int</name>
-			<key>s32</key>
-			<opt>size:4</opt>
-		</option>
-		<option>
-			<name>Short</name>
-			<key>s16</key>
-			<opt>size:2</opt>
-		</option>
-	</param>
-	<sink>
-		<name>in</name>
-		<type>$type</type>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>$type</type>
-	</source>
-</block>
diff --git a/grc/blocks/gr_head.xml b/grc/blocks/gr_head.xml
deleted file mode 100644
index e5ff7f6aad..0000000000
--- a/grc/blocks/gr_head.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Head
-###################################################
- -->
-<block>
-	<name>Head</name>
-	<key>gr_head</key>
-	<import>from gnuradio import gr</import>
-	<make>gr.head($type.size*$vlen, $num_items)</make>
-	<param>
-		<name>Type</name>
-		<key>type</key>
-		<type>enum</type>
-		<option>
-			<name>Complex</name>
-			<key>complex</key>
-			<opt>size:gr.sizeof_gr_complex</opt>
-		</option>
-		<option>
-			<name>Float</name>
-			<key>float</key>
-			<opt>size:gr.sizeof_float</opt>
-		</option>
-		<option>
-			<name>Int</name>
-			<key>int</key>
-			<opt>size:gr.sizeof_int</opt>
-		</option>
-		<option>
-			<name>Short</name>
-			<key>short</key>
-			<opt>size:gr.sizeof_short</opt>
-		</option>
-		<option>
-			<name>Byte</name>
-			<key>byte</key>
-			<opt>size:gr.sizeof_char</opt>
-		</option>
-	</param>
-	<param>
-		<name>Num Items</name>
-		<key>num_items</key>
-		<value>1024</value>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Vec Length</name>
-		<key>vlen</key>
-		<value>1</value>
-		<type>int</type>
-	</param>
-	<check>$vlen &gt; 0</check>
-	<sink>
-		<name>in</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-	</source>
-</block>
diff --git a/grc/blocks/gr_kludge_copy.xml b/grc/blocks/gr_kludge_copy.xml
deleted file mode 100644
index 8058b082db..0000000000
--- a/grc/blocks/gr_kludge_copy.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Kludge Copy
-###################################################
- -->
-<block>
-	<name>Kludge Copy</name>
-	<key>gr_kludge_copy</key>
-	<import>from gnuradio import gr</import>
-	<make>gr.kludge_copy($type.size*$vlen)</make>
-	<param>
-		<name>Type</name>
-		<key>type</key>
-		<type>enum</type>
-		<option>
-			<name>Complex</name>
-			<key>complex</key>
-			<opt>size:gr.sizeof_gr_complex</opt>
-		</option>
-		<option>
-			<name>Float</name>
-			<key>float</key>
-			<opt>size:gr.sizeof_float</opt>
-		</option>
-		<option>
-			<name>Int</name>
-			<key>int</key>
-			<opt>size:gr.sizeof_int</opt>
-		</option>
-		<option>
-			<name>Short</name>
-			<key>short</key>
-			<opt>size:gr.sizeof_short</opt>
-		</option>
-		<option>
-			<name>Byte</name>
-			<key>byte</key>
-			<opt>size:gr.sizeof_char</opt>
-		</option>
-	</param>
-	<param>
-		<name>Num Ports</name>
-		<key>num_ports</key>
-		<value>1</value>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Vec Length</name>
-		<key>vlen</key>
-		<value>1</value>
-		<type>int</type>
-	</param>
-	<check>$num_ports &gt; 0</check>
-	<check>$vlen &gt; 0</check>
-	<sink>
-		<name>in</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-		<nports>$num_ports</nports>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-		<nports>$num_ports</nports>
-	</source>
-</block>
diff --git a/grc/blocks/gr_mpsk_sync_cc.xml b/grc/blocks/gr_mpsk_sync_cc.xml
deleted file mode 100644
index fd08f8340b..0000000000
--- a/grc/blocks/gr_mpsk_sync_cc.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##MPSK Sync
-###################################################
- -->
-<block>
-	<name>MPSK Sync</name>
-	<key>gr_mpsk_sync_cc</key>
-	<import>from gnuradio import gr</import>
-	<make>gr.mpsk_sync_cc($alpha, $beta, $max_freq, $min_freq, $ref_phase, $omega, $gain_omega, $mu, $gain_mu)</make>
-	<callback>set_mu($mu)</callback>
-	<callback>set_gain_mu($gain_mu)</callback>
-	<callback>set_omega($omega)</callback>
-	<callback>set_gain_omega($gain_omega)</callback>
-	<param>
-		<name>Alpha</name>
-		<key>alpha</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Beta</name>
-		<key>beta</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Max Freq</name>
-		<key>max_freq</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Min Freq</name>
-		<key>min_freq</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Reference Phase</name>
-		<key>ref_phase</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Omega</name>
-		<key>omega</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Gain Omega</name>
-		<key>gain_omega</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Mu</name>
-		<key>mu</key>
-		<type>real</type>
-	</param>
-	<param>
-		<name>Gain Mu</name>
-		<key>gain_mu</key>
-		<type>real</type>
-	</param>
-	<sink>
-		<name>in</name>
-		<type>complex</type>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>complex</type>
-	</source>
-</block>
diff --git a/grc/blocks/gr_nop.xml b/grc/blocks/gr_nop.xml
deleted file mode 100644
index bd884d6b8b..0000000000
--- a/grc/blocks/gr_nop.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Nop
-###################################################
- -->
-<block>
-	<name>Nop</name>
-	<key>gr_nop</key>
-	<import>from gnuradio import gr</import>
-	<make>gr.nop($type.size*$vlen)</make>
-	<param>
-		<name>Type</name>
-		<key>type</key>
-		<type>enum</type>
-		<option>
-			<name>Complex</name>
-			<key>complex</key>
-			<opt>size:gr.sizeof_gr_complex</opt>
-		</option>
-		<option>
-			<name>Float</name>
-			<key>float</key>
-			<opt>size:gr.sizeof_float</opt>
-		</option>
-		<option>
-			<name>Int</name>
-			<key>int</key>
-			<opt>size:gr.sizeof_int</opt>
-		</option>
-		<option>
-			<name>Short</name>
-			<key>short</key>
-			<opt>size:gr.sizeof_short</opt>
-		</option>
-		<option>
-			<name>Byte</name>
-			<key>byte</key>
-			<opt>size:gr.sizeof_char</opt>
-		</option>
-	</param>
-	<param>
-		<name>Num Ports</name>
-		<key>num_ports</key>
-		<value>1</value>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Vec Length</name>
-		<key>vlen</key>
-		<value>1</value>
-		<type>int</type>
-	</param>
-	<check>$num_ports &gt; 0</check>
-	<check>$vlen &gt; 0</check>
-	<sink>
-		<name>in</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-		<nports>$num_ports</nports>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-		<nports>$num_ports</nports>
-	</source>
-</block>
diff --git a/grc/blocks/gr_null_sink.xml b/grc/blocks/gr_null_sink.xml
deleted file mode 100644
index ed106b4950..0000000000
--- a/grc/blocks/gr_null_sink.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Null Sink
-###################################################
- -->
-<block>
-	<name>Null Sink</name>
-	<key>gr_null_sink</key>
-	<import>from gnuradio import gr</import>
-	<make>gr.null_sink($type.size*$vlen)</make>
-	<param>
-		<name>Input Type</name>
-		<key>type</key>
-		<type>enum</type>
-		<option>
-			<name>Complex</name>
-			<key>complex</key>
-			<opt>size:gr.sizeof_gr_complex</opt>
-		</option>
-		<option>
-			<name>Float</name>
-			<key>float</key>
-			<opt>size:gr.sizeof_float</opt>
-		</option>
-		<option>
-			<name>Int</name>
-			<key>int</key>
-			<opt>size:gr.sizeof_int</opt>
-		</option>
-		<option>
-			<name>Short</name>
-			<key>short</key>
-			<opt>size:gr.sizeof_short</opt>
-		</option>
-		<option>
-			<name>Byte</name>
-			<key>byte</key>
-			<opt>size:gr.sizeof_char</opt>
-		</option>
-	</param>
-	<param>
-		<name>Vec Length</name>
-		<key>vlen</key>
-		<value>1</value>
-		<type>int</type>
-	</param>
-	<check>$vlen &gt; 0</check>
-	<sink>
-		<name>in</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-	</sink>
-</block>
diff --git a/grc/blocks/gr_null_source.xml b/grc/blocks/gr_null_source.xml
deleted file mode 100644
index 6132eae3cb..0000000000
--- a/grc/blocks/gr_null_source.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Null Source
-###################################################
- -->
-<block>
-	<name>Null Source</name>
-	<key>gr_null_source</key>
-	<import>from gnuradio import gr</import>
-	<make>gr.null_source($type.size*$vlen)</make>
-	<param>
-		<name>Output Type</name>
-		<key>type</key>
-		<type>enum</type>
-		<option>
-			<name>Complex</name>
-			<key>complex</key>
-			<opt>size:gr.sizeof_gr_complex</opt>
-		</option>
-		<option>
-			<name>Float</name>
-			<key>float</key>
-			<opt>size:gr.sizeof_float</opt>
-		</option>
-		<option>
-			<name>Int</name>
-			<key>int</key>
-			<opt>size:gr.sizeof_int</opt>
-		</option>
-		<option>
-			<name>Short</name>
-			<key>short</key>
-			<opt>size:gr.sizeof_short</opt>
-		</option>
-		<option>
-			<name>Byte</name>
-			<key>byte</key>
-			<opt>size:gr.sizeof_char</opt>
-		</option>
-	</param>
-	<param>
-		<name>Vec Length</name>
-		<key>vlen</key>
-		<value>1</value>
-		<type>int</type>
-	</param>
-	<check>$vlen &gt; 0</check>
-	<source>
-		<name>out</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-	</source>
-</block>
diff --git a/grc/blocks/gr_skiphead.xml b/grc/blocks/gr_skiphead.xml
deleted file mode 100644
index 0849ad2981..0000000000
--- a/grc/blocks/gr_skiphead.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Skip Head
-###################################################
- -->
-<block>
-	<name>Skip Head</name>
-	<key>gr_skiphead</key>
-	<import>from gnuradio import gr</import>
-	<make>gr.skiphead($type.size*$vlen, $num_items)</make>
-	<param>
-		<name>Type</name>
-		<key>type</key>
-		<type>enum</type>
-		<option>
-			<name>Complex</name>
-			<key>complex</key>
-			<opt>size:gr.sizeof_gr_complex</opt>
-		</option>
-		<option>
-			<name>Float</name>
-			<key>float</key>
-			<opt>size:gr.sizeof_float</opt>
-		</option>
-		<option>
-			<name>Int</name>
-			<key>int</key>
-			<opt>size:gr.sizeof_int</opt>
-		</option>
-		<option>
-			<name>Short</name>
-			<key>short</key>
-			<opt>size:gr.sizeof_short</opt>
-		</option>
-		<option>
-			<name>Byte</name>
-			<key>byte</key>
-			<opt>size:gr.sizeof_char</opt>
-		</option>
-	</param>
-	<param>
-		<name>Num Items</name>
-		<key>num_items</key>
-		<value>1024</value>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Vec Length</name>
-		<key>vlen</key>
-		<value>1</value>
-		<type>int</type>
-	</param>
-	<check>$vlen &gt; 0</check>
-	<sink>
-		<name>in</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-	</source>
-</block>
diff --git a/grc/blocks/gr_vector_insert_x.xml b/grc/blocks/gr_vector_insert_x.xml
deleted file mode 100644
index f9ce1f6544..0000000000
--- a/grc/blocks/gr_vector_insert_x.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Vector Source
-###################################################
- -->
-<block>
-	<name>Vector Insert</name>
-	<key>gr_vector_insert_x</key>
-	<import>from gnuradio import gr</import>
-	<make>gr.vector_insert_$(type.fcn)($vector, $period, $offset)</make>
-	<param>
-		<name>Output Type</name>
-		<key>type</key>
-		<type>enum</type>
-		<option>
-			<name>Byte</name>
-			<key>byte</key>
-			<opt>fcn:b</opt>
-			<opt>vec_type:int_vector</opt>
-		</option>
-		<option>
-			<name>Complex</name>
-			<key>complex</key>
-			<opt>fcn:c</opt>
-			<opt>vec_type:complex_vector</opt>
-		</option>
-		<option>
-			<name>Float</name>
-			<key>float</key>
-			<opt>fcn:f</opt>
-			<opt>vec_type:real_vector</opt>
-		</option>
-		<option>
-			<name>Int</name>
-			<key>int</key>
-			<opt>fcn:i</opt>
-			<opt>vec_type:int_vector</opt>
-		</option>
-		<option>
-			<name>Short</name>
-			<key>short</key>
-			<opt>fcn:s</opt>
-			<opt>vec_type:int_vector</opt>
-		</option>
-	</param>
-	<param>
-		<name>Vector</name>
-		<key>vector</key>
-		<value>0, 0, 0</value>
-		<type>$type.vec_type</type>
-	</param>
-	<param>
-		<name>Periodicity</name>
-		<key>period</key>
-		<value>100</value>
-		<type>int</type>
-	</param>
-	<param>
-		<name>Offset</name>
-		<key>offset</key>
-		<value>0</value>
-		<type>int</type>
-	</param>
-	<sink>
-		<name>in</name>
-		<type>$type</type>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>$type</type>
-	</source>
-
-    <doc>
-        Periodicity, the length of the periodicity at which the vector should be inserted at the output.
-        (i.e. one vector for every N output items)
-
-        Offset sepcifies where in the cycle period we should begin at.
-    </doc>
-</block>
diff --git a/grc/blocks/gr_vector_sink_x.xml b/grc/blocks/gr_vector_sink_x.xml
deleted file mode 100644
index 3bd998698f..0000000000
--- a/grc/blocks/gr_vector_sink_x.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Vector sink
-###################################################
- -->
-<block>
-	<name>Vector Sink</name>
-	<key>gr_vector_sink_x</key>
-	<import>from gnuradio import gr</import>
-	<make>gr.vector_sink_$(type.fcn)($vlen)</make>
-	<param>
-		<name>Input Type</name>
-		<key>type</key>
-		<type>enum</type>
-		<option>
-			<name>Complex</name>
-			<key>complex</key>
-			<opt>fcn:c</opt>
-		</option>
-		<option>
-			<name>Float</name>
-			<key>float</key>
-			<opt>fcn:f</opt>
-		</option>
-		<option>
-			<name>Int</name>
-			<key>int</key>
-			<opt>fcn:i</opt>
-		</option>
-		<option>
-			<name>Short</name>
-			<key>short</key>
-			<opt>fcn:s</opt>
-		</option>
-		<option>
-			<name>Byte</name>
-			<key>byte</key>
-			<opt>fcn:b</opt>
-		</option>
-	</param>
-	<param>
-		<name>Vec Length</name>
-		<key>vlen</key>
-		<value>1</value>
-		<type>int</type>
-	</param>
-	<check>$vlen &gt; 0</check>
-	<sink>
-		<name>in</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-	</sink>
-</block>
diff --git a/grc/blocks/gr_vector_source_x.xml b/grc/blocks/gr_vector_source_x.xml
deleted file mode 100644
index 992a6a787d..0000000000
--- a/grc/blocks/gr_vector_source_x.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Vector Source
-###################################################
- -->
-<block>
-	<name>Vector Source</name>
-	<key>gr_vector_source_x</key>
-	<import>from gnuradio import gr</import>
-	<make>gr.vector_source_$(type.fcn)($vector, $repeat, $vlen, $tags)
-    </make>
-	<param>
-		<name>Output Type</name>
-		<key>type</key>
-		<type>enum</type>
-		<option>
-			<name>Complex</name>
-			<key>complex</key>
-			<opt>fcn:c</opt>
-			<opt>vec_type:complex_vector</opt>
-		</option>
-		<option>
-			<name>Float</name>
-			<key>float</key>
-			<opt>fcn:f</opt>
-			<opt>vec_type:real_vector</opt>
-		</option>
-		<option>
-			<name>Int</name>
-			<key>int</key>
-			<opt>fcn:i</opt>
-			<opt>vec_type:int_vector</opt>
-		</option>
-		<option>
-			<name>Short</name>
-			<key>short</key>
-			<opt>fcn:s</opt>
-			<opt>vec_type:int_vector</opt>
-		</option>
-		<option>
-			<name>Byte</name>
-			<key>byte</key>
-			<opt>fcn:b</opt>
-			<opt>vec_type:int_vector</opt>
-		</option>
-	</param>
-	<param>
-		<name>Vector</name>
-		<key>vector</key>
-		<value>0, 0, 0</value>
-		<type>raw</type>
-	</param>
-	<param>
-		<name>Tags</name>
-		<key>tags</key>
-		<value>[]</value>
-		<type>raw</type>
-	</param>
-	<param>
-		<name>Repeat</name>
-		<key>repeat</key>
-		<value>True</value>
-		<type>enum</type>
-		<option>
-			<name>Yes</name>
-			<key>True</key>
-		</option>
-		<option>
-			<name>No</name>
-			<key>False</key>
-		</option>
-	</param>
-	<param>
-		<name>Vec Length</name>
-		<key>vlen</key>
-		<value>1</value>
-		<type>int</type>
-	</param>
-	<check>$vlen &gt; 0</check>
-	<source>
-		<name>out</name>
-		<type>$type</type>
-		<vlen>$vlen</vlen>
-	</source>
-</block>
diff --git a/grc/blocks/random_source_x.xml b/grc/blocks/random_source_x.xml
index 800bae7167..f826c77d16 100644
--- a/grc/blocks/random_source_x.xml
+++ b/grc/blocks/random_source_x.xml
@@ -10,7 +10,7 @@
 	<key>random_source_x</key>
 	<import>from gnuradio import gr</import>
 	<import>import numpy</import>
-	<make>gr.vector_source_$(type.fcn)(map(int, numpy.random.randint($min, $max, $num_samps)), $repeat)</make>
+	<make>blocks.vector_source_$(type.fcn)(map(int, numpy.random.randint($min, $max, $num_samps)), $repeat)</make>
 	<param>
 		<name>Output Type</name>
 		<key>type</key>
diff --git a/grc/grc_gnuradio/blks2/packet.py b/grc/grc_gnuradio/blks2/packet.py
index eeadfb4a60..4c7bd235dd 100644
--- a/grc/grc_gnuradio/blks2/packet.py
+++ b/grc/grc_gnuradio/blks2/packet.py
@@ -1,4 +1,4 @@
-# Copyright 2008, 2009, 2012 Free Software Foundation, Inc.
+# Copyright 2008,2009,2012-2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -236,10 +236,12 @@ class packet_demod_base(gr.hier_block2):
 		self.connect(self, packet_sink)
 		self.connect(msg_source, self)
 		if packet_sink._hb.output_signature().sizeof_stream_item(0):
-			self.connect(packet_sink, gr.null_sink(packet_sink._hb.output_signature().sizeof_stream_item(0)))
+			self.connect(packet_sink,
+                                     blocks.null_sink(packet_sink._hb.output_signature().sizeof_stream_item(0)))
 
 	def recv_pkt(self, ok, payload):
-		msg = blocks.message_from_string(payload, 0, self._item_size_out, len(payload)/self._item_size_out)
+		msg = blocks.message_from_string(payload, 0, self._item_size_out,
+                                                 len(payload)/self._item_size_out)
 		if ok: self._msgq_out.insert_tail(msg)
 
 class packet_demod_b(packet_demod_base): _item_size_out = gr.sizeof_char
diff --git a/grc/grc_gnuradio/blks2/selector.py b/grc/grc_gnuradio/blks2/selector.py
index f6a8aa79b1..bc393f84b6 100644
--- a/grc/grc_gnuradio/blks2/selector.py
+++ b/grc/grc_gnuradio/blks2/selector.py
@@ -1,5 +1,5 @@
 #
-# Copyright 2008 Free Software Foundation, Inc.
+# Copyright 2008,2013 Free Software Foundation, Inc.
 #
 # This file is part of GNU Radio
 #
@@ -20,6 +20,7 @@
 #
 
 from gnuradio import gr
+from gnuradio import blocks
 
 class selector(gr.hier_block2):
 	"""A hier2 block with N inputs and M outputs, where data is only forwarded through input n to output m."""
@@ -40,12 +41,13 @@ class selector(gr.hier_block2):
 			gr.io_signature(num_outputs, num_outputs, item_size),
 		)
 		#terminator blocks for unused inputs and outputs
-		self.input_terminators = [gr.null_sink(item_size) for i in range(num_inputs)]
-		self.output_terminators = [gr.head(item_size, 0) for i in range(num_outputs)]
-		self.copy = gr.kludge_copy(item_size)
+		self.input_terminators = [blocks.null_sink(item_size) for i in range(num_inputs)]
+		self.output_terminators = [blocks.head(item_size, 0) for i in range(num_outputs)]
+		self.copy = blocks.copy(item_size)
 		#connections
 		for i in range(num_inputs): self.connect((self, i), self.input_terminators[i])
-		for i in range(num_outputs): self.connect(gr.null_source(item_size), self.output_terminators[i], (self, i))
+		for i in range(num_outputs): self.connect(blocks.null_source(item_size),
+                                                          self.output_terminators[i], (self, i))
 		self.item_size = item_size
 		self.input_index = input_index
 		self.output_index = output_index
-- 
cgit v1.2.3