first commit

still needs tests