use refinements in the future
non final version with dev comments
no unit tests, sorry, too easy project