Fix #3. Add tests