First version with constructor parameters. Still a lot of limitations though.