public code for all to use!