BEtter clean up the code using Optional
Added cucumber BDD test cases that was based on the original junit test
cases...