- added some meaningful unit tests - splitted classes into heap-allocated (starting with 'H') and stack-allocated (starting with 'S'), unfortunately there is a lot of duplicated code but I am still unable to find an elegant solution to use the smae code to deal with both the stack-allocated class and the heap-allocated one