removed client-side code to ease maintainability