Making this public, not complete yet