adding unit tests, demo and introducing formats