first pass at sharing functionality