Custom obj done, lot of refactoring