add portable solution
add abligatory boundary test