up to the implementation of Either. ex4.6