raw init and not so clean code