Cleaned up and made the interface nicer