add Writer
add QuickCheck
add function composition and reader