Cleaned up and documented Component