add better logging system