alot cleaner code!