Initial commit with tests and basic features