Parameter checking works a bit better. Still need to be a bit careful with __init__