seperated object logic