add lots of methods -- needs clean up still