Updated to comply with best practices