rewrite person class
merge with master