Completely overhaul old Lang system and allow for abstraction and implementation