base types restricting types