Cleaned up solution for ability refactor