add initial switch implementation