separated out private attrs and methods