modern version with a self invented optimistic monad
updated test cases to use the modern version of white-space
mistake..