looks good now
clean up

adjusted types and class names
better class names