Setting up some base level functions and interface implementation