Added Alternative instances and demands
Added justification for avoiding Monad