Initial port
Initial port with tests and solution