simplify types and implementation
fix erma_tests and erma_utils_tests
all tests passsed
fix dialyzer errors
use lists:keyfind instead of proplists:get_value
change joins structure for better merge
better organize unit tests