default implementation for compose