Using module to improve namespace pollution. Still a little wonky though...