Started take() method implementation, moved preferences and its enumerations to the separate nested struct.